【问题标题】:UISplitViewController with UINavigationController as Details View: push controller via Storyboard segueUISplitViewController 与 UINavigationController 作为详细信息视图:通过 Storyboard segue 推送控制器
【发布时间】: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


【解决方案1】:

您能否在导航控制器中嵌入红色视图并将替换细节从主 VC 链接到新导航控制器?

您还没有说 segue 将绿色 vc 连接到红色 VC,但这可以保持直接连接到红色 VC 并更改为推送,或者连接到新的导航控制器。

【讨论】:

  • 这可能有效,但我会失去与绿色导航控制器的连接,所以我不会有一个“返回”按钮来返回它。绿色的vc连接,红色的连接正常推送。如果我没有找到任何其他解决方案,我会考虑这个想法,因为我还没有决定一些关于来回逻辑的细节。
  • 这听起来像一个奇怪的导航结构如果你可以去黄-红-绿。绿色从何而来?
猜你喜欢
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 2014-10-04
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多