【发布时间】:2015-03-10 22:15:57
【问题描述】:
我当前的 Storyboard 是这样设置的:
(原图:http://i.stack.imgur.com/1Nk6K.png)
有一个Split View Controller,有两个Navigation Controller。 Master的Navigation Controller有一个不同cell的Table View(黄色);详细信息的导航控制器有一个带有不同单元格(蓝色)的集合视图(绿色)。通过点击蓝色和黄色单元格,在详细信息的导航控制器中打开相应的视图控制器(红色)。
如您所见,有一个连接将黄色单元格连接到红色视图。转场是Show Detail (e.g. Replace) 的那种。我想做的是在现有导航控制器的详细信息视图中显示红色视图。但是,结果是整个Detail的Navigation Controller被替换了,Split View的Detail View只显示红色的View Controller,没有任何导航栏。
这可以仅使用情节提要或使用某些特定代码来完成吗?
我发现这样做的唯一方法是在主视图控制器中实现它:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UINavigationController *navigationController = [self.splitViewController.viewControllers lastObject];
PostViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"PostView"]; // instantiate the red view controller
[navigationController pushViewController:controller animated:YES];
}
哪个有效;代码不多,但感觉像是在耍花招?
【问题讨论】:
-
重要的是它被推送到同一个导航堆栈上,还是只是它有一个导航栏、标题等?
-
实际上并没有实际需要。您是否建议在红色视图中添加导航栏?因为这需要 Storyboard 中有两个不同的(红色)视图,所以我需要复制它的整个布局......
标签: ios objective-c uinavigationcontroller uisplitviewcontroller