我有一个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];
}
}
以下内容不会将视图控制器推入堆栈。什么都没发生。我该如何解决?
答案 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)
在引用导航控制器时,您似乎正在呼叫自己。您是否实际分配了导航控制器并将其分配给自己?