2010-04-22 8 views
19

나는 UITableView에 데이터가있는 앱에서 일하고 있습니다. 그것은 드릴 다운 어플리케이션과 같습니다. 사용자는 행을 클릭하고 UITableView에 더 많은 레코드를 보여주는 다음 페이지로 이동합니다. 하지만 내 경우에 문제는 얼마나 많은 수준의 사용자가 드릴링 할 수 있는지를 모른다는 것입니다. 레벨 수는 고정되어 있지 않습니다. 그래서 지금은 프로그래밍 방식으로 viewcontroller를 만들고 추가하려고합니다. 그것은 가능한가 ?? 그렇다면 어떻게? 사전에 감사합니다. 프로그래밍 방식으로 UIViewController를 만드는 방법은 무엇입니까?

답변

20
UIViewController *controller = [[UIViewController alloc] init]; 
controller.view = whateverViewYouHave; 

코딩 한 뷰 컨트롤러가 있습니까? 이 경우 IB에서 설정 한대로 view 속성을 설정하지 않아도됩니다. 컨트롤러가 있으면 navigationController에 밀어 넣거나 모달로 볼 수 있습니다.

+0

지금 나는 viewcontroller에있어 새로운 viewcontroller에 사용자를 연결하고 tableview에 데이터를 표시하고 싶습니다. – pankaj

+0

예, 한 가지 더 많은 사용자가이 새로운 프로그래밍 방식으로 만들어진 viewcontroller에서 다음 수준으로 추가 드릴 다운 할 수 있습니다. – pankaj

+2

아마도 첫 번째보기 컨트롤러가 UINavigationController가되기를 원할 것입니다. – willcodejavaforfood

3

UIViewController은 항상 프로그래밍 방식으로 생성됩니다. 당신이 다만이 경우 :, 뷰 컨트롤러의 각 수준에 대해 동일한 클래스를 가지고

//CoolViewController:UITableViewController 
//CoolViewController.m 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (!self.isAtTopLevel) { 
     CoolViewController *cvc = [[CoolViewController alloc] initWithRecord:[self.records objectAtIndex:indexPath.row]]; 
     [self.navigationController pushViewController:cvc animated:YES]; 
     [cvc release]; 
    } else { 
     //do something else 
    } 
} 

을 예컨대 필요 것처럼 소리, thingies 재귀있는 NSArray (배열 즉, 배열)의 일종이 될 것입니다.

+0

답변을 주셔서 감사합니다 eman,이 새로운보기 컨트롤러에서 나는 레코드와 함께 UITableview를 표시해야합니다. 내가 어떻게 할거 니? – pankaj

+0

그리고 예, 한 가지 더 많은 사용자가이 새로운 프로그래밍 방식으로 생성 된 뷰 콘트롤러 – pankaj

+0

(업데이트 된 예제)에서 다음 단계로 더 자세히 드릴 다운 할 수 있습니다.이 예제에서 각 테이블 뷰 컨트롤러는 레코드 배열을 가지며, 각 레코드는 하위 레코드 (올바르게 디자인을 이해하지 못하는 경우 수정하십시오.) 그래서 당신은'Record'라는 클래스를 가질 수 있습니다.이 클래스는 테이블 셀에 표시되는 이름과'Record's의 NSArray입니다. 각 테이블 뷰 컨트롤러는 하위 레코드의 배열을 표시합니다. – shosti

관련 문제