UITableViewController没有将视图推送到堆栈

时间:2011-08-08 22:26:12

标签: iphone cocoa-touch uitableview uisearchbar

我有一个UITableViewController在其标题视图中有一个UISearchbar。当用户搜索时,我的UITableView会填充结果。我想在用户选择结果时将新的视图控制器推送到堆栈。

- (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];
    }     
}

以下内容不会将视图控制器推入堆栈。什么都没发生。我该如何解决?

2 个答案:

答案 0 :(得分:0)

我猜self.navigationController为零,因此邮件pushViewController无处发送。

要解决此问题,您可以在UINavigationController中创建一个application:didFinishLaunching,然后将表视图控制器作为其根控制器推送到它上面:

 - (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使用表视图控制器初始化导航视图控制器。

答案 1 :(得分:0)

在引用导航控制器时,您似乎正在呼叫自己。您是否实际分配了导航控制器并将其分配给自己?