如果我在 Storyboard 中有一个容器视图,是不是可以只将一个视图控制器嵌入到导航控制器中?
Posted
技术标签:
【中文标题】如果我在 Storyboard 中有一个容器视图,是不是可以只将一个视图控制器嵌入到导航控制器中?【英文标题】:If I have a container view in the Storyboard, is it possible to have only ONE of the view controllers be embedded in a navigation controller?如果我在 Storyboard 中有一个容器视图,是否可以只将一个视图控制器嵌入到导航控制器中? 【发布时间】:2013-12-31 16:47:03 【问题描述】:在我的 Storyboard 中查看以下设置:
我在第一个视图控制器中有两个容器视图,一个用于显示帖子的主视图,另一个用于帖子视图滑出以显示的菜单。
我希望菜单栏滑开like described here,我可以使用它但没有导航栏。我尝试使用 Editor > Embed in Navigation Controller 到包含子项的视图控制器(有效,但是当菜单滑出it still showed for the menu which doesn't look as intended)以及当我为帖子视图控制器执行此操作时,它会因此错误而崩溃:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UINavigationController setContainingViewController:]:无法识别的选择器发送到实例 0x8e81c60”
有谁知道如何实现这个效果?
【问题讨论】:
【参考方案1】:我认为这篇文章与 Doug Smith Why does hiding my status bar completely break my simple animation? 的这篇文章有关。您的问题与仅嵌入在导航控制器中的一个控制器无关。它崩溃了,因为您试图在 UINavigationController 而不是 PostsViewController 上调用 setContainingViewController,后者是(在添加导航控制器之前)嵌入 segue 的destinationViewController。由于导航控制器现在是destinationViewController,因此您需要将prepareForSegue中的代码更改为:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([segue.identifier isEqualToString:@"Posts"])
UINavigationController *nav = (UINavigationController *)segue.destinationViewController;
PostsViewController *postsViewController = (PostsViewController *)nav.topViewController;
postsViewController.containingViewController = self;
if ([segue.identifier isEqualToString:@"Menu"])
MenuViewController *menuViewController = (MenuViewController *)segue.destinationViewController;
menuViewController.containingViewController = self;
【讨论】:
啊哈! Doug 和其他一些人是软件组的一部分,所以它确实是相关的。好眼力!:)以上是关于如果我在 Storyboard 中有一个容器视图,是不是可以只将一个视图控制器嵌入到导航控制器中?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Delegate 在 ContainerView 中的 Storyboard 中创建 UITableView
在 Xcode7 - beta 5 和 storyboard 中展开 segue
如果从 Storyboard 添加约束,则 GMSMapView 不显示任何内容