如何在作为导航控制器的插入视图的 tableview 中推送新的 viewController?
Posted
技术标签:
【中文标题】如何在作为导航控制器的插入视图的 tableview 中推送新的 viewController?【英文标题】:How to push a new viewController in a tableview which is a inserted view of a navigationcontroller? 【发布时间】:2011-05-08 03:00:35 【问题描述】:我有一个 HomeViewController.m,我在其中通过 self.navigationController
推送 SpecificViewController,
SpecificViewController *specificViewController= [[SpecificViewController alloc] initWithNibName:@"SpecificViewController" bundle:nil];
[self.navigationController pushViewController:specificViewController animated:YES];
在 SpecificViewController.m 中插入一个子视图
FirstViewController *firstViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
[self.view insertSubview:firstViewController.view atIndex:0];
在FirstViewController.m 中,有一个tableview。问题是如何通过navigationController推送新的ViewController,我在下面尝试过,但它不起作用。
-(void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath
DetailTableViewController *detail =
[[DetailTableViewController alloc] initWithStyle:UITableViewStyleGrouped];
[self.navigationController pushViewController:detail animated:YES];
[detail release];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
我还是尝试了新的 UINavigationController,
UINavigationController *NEWnavigationController;
NEWnavigationController=[[UINavigationController alloc] init];
[NEWnavigationController pushViewController:detail animated:YES];
但它仍然没有工作。你能给我什么建议吗?
【问题讨论】:
【参考方案1】:你的方法有很多问题。
首先,SpecificViewController 是您加载的第一个视图控制器吗?如果是,则不要推送此视图控制器,而是将其设置为应用程序委托中的根视图控制器,如下所示
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:[[SpecificViewController alloc] init];
这将确保您的导航控制器已设置并且出现的第一个视图控制器是 SpecificViewController
其次,您不插入视图控制器作为子视图。如果您尝试加载第二个视图控制器,则将其推送到导航控制器堆栈上。您可以从 SpecificViewController 执行此操作,如下所示
FirstViewController *firstViewController =[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
[self.navigationController pushViewController:firstViewController animated:YES];
【讨论】:
以上是关于如何在作为导航控制器的插入视图的 tableview 中推送新的 viewController?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 5 XCODE 4.3.2 故事板。如何在现有表视图之前插入新视图?