如果我在Storyboard中有一个容器视图,是否可以只将一个视图控制器嵌入到导航控制器中?

时间:2013-12-13 01:39:02

标签: ios uiviewcontroller uinavigationcontroller interface-builder uistoryboard

在我的故事板中查看以下设置:

enter image description here

我在第一个视图控制器中有两个容器视图,一个用于显示帖子的主视图,另一个用于帖子视图滑出以显示的菜单。

我想让菜单栏滑开like described here,我已经工作但没有导航栏。我尝试过使用Editor>将导航控制器嵌入到包含子项的视图控制器(有效,但当菜单滑出it still showed for the menu which doesn't look as intended时)以及当我为帖子视图控制器执行此操作时,它会因此错误而崩溃:

  

***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [UINavigationController setContainingViewController:]:无法识别的选择器发送到实例0x8e81c60'

有谁知道如何实现这种效果?

1 个答案:

答案 0 :(得分:0)

我认为这篇文章与Doug Smith,Why does hiding my status bar completely break my simple animation?有关。您的问题与只有一个嵌入在导航控制器中的控制器无关。它崩溃了,因为你试图在UINavigationController上调用setContainingViewController而不是PostsViewController,它是(在你添加导航控制器之前)embed 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;
    }
}