2011-08-08 1 views
0

헤더 뷰에 UISearchbar가있는 UITableViewController가 있습니다. 사용자가 검색하면 내 UITableView가 결과로 채워집니다. 사용자가 결과를 선택할 때 새로운 뷰 컨트롤러를 스택에 푸시하고 싶습니다.UITableViewController가 뷰를 스택에 푸시하지 않습니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

    if (cell.accessoryType == UITableViewCellAccessoryNone) { 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 

     WatchlistSheetView* watchlistSheetView = [[WatchlistSheetView alloc] initWithNibName:@"WatchlistSheetView" bundle:nil]; 
     watchlistSheetView.symbol = cell.textLabel.text; 
     [self.navigationController pushViewController:watchlistSheetView animated:YES]; 
     [watchlistSheetView release]; 

     //[self dismissModalViewControllerAnimated:YES]; 
    }  
} 

다음은보기 컨트롤러를 스택으로 푸시하지 않습니다. 아무 반응이 없습니다. 어떻게 해결할 수 있습니까?

+1

이 호출 후에 watchlistSheetView가 nil이 아니며 self.navigationController가 nil이 아닌지 확인할 수 있습니까? 전반적으로이 코드는 잘 보입니다. –

답변

0

pushViewController은 아무데도 전송되지 않으므로 self.navigationController이 nil이라고 생각합니다.

이 문제를 해결하려면, 당신은 당신의 application:didFinishLaunchingUINavigationController을 만들고 루트 컨트롤러로에에 테이블 뷰 컨트롤러를 밀어,이 라인을 따라 :

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    UINavigationController* navigation = [[UINavigationController alloc] init]; 

    .... 
    [navigation pushViewController:yourTableViewController animated:NO]; 
    ... 
    [window addSubview:[navigation view]]; 
    [self.window makeKeyAndVisible]; 
} 

를하거나 탐색을 초기화 initWithRootController을 사용할 수 있습니다 보기 컨트롤러와 테이블보기 컨트롤러.

+0

이 UITableViewController는 모달로 표시됩니다. 이것은 UINavigationController가 없다는 것을 의미합니까? 어디에서 설정할 수 있습니까? –

+0

내 대답의 코드는 네비게이션 컨트롤러를 설정하기 위해해야 ​​할 일을 설명합니다. 코드 또는 IB 중 하나를 사용하여 탐색 컨트롤러를 만들지 않았다면 탐색기가 없기 때문에 탐색기를 만들어야합니다. 가장 좋은 점은, 필자가 대답 한 것처럼'application : didFinishLaunchingWithOptions'에서 작성하십시오. UI가 모달이 필요하면 모달로 내비게이션 컨트롤러를 표시 할 수 있지만 먼저 "정상적인"방법으로 실행합니다. – sergio

+0

탐색 컨트롤러가 있습니다. 내 응용 프로그램은 각 탭에 대해 UINavigationControllers가 포함 된 UITabBarController 응용 프로그램입니다. 탭 중 하나가 다른 UITableView를 모달로 시작합니다. 이것은 내가 문제가있는 곳입니다. 어쩌면 parentViewController의 탐색 바를 가져와야할까요? –

0

내비게이션 컨트롤러를 참조 할 때 self를 호출하는 것처럼 보입니다. 실제로 네비게이션 컨트롤러를 할당하고 자신에게 할당 했습니까?