在视图内创建导航控制器

时间:2016-04-30 10:49:58

标签: ios xcode swift uinavigationcontroller

我有ViewController mainVC - 它由两部分组成 - 导航视图和包装器视图。当用户按下NavigationView中的一个按钮时 - 我的一个ViewControllers - 例如 vc 被加载到WrapperView中。

    addChildViewController(vc)

   //size adjustment
   vc.view.frame = contentView.bounds
   WrapperView.addSubview(vc.view)

我想知道是否可以将NavigationController放在WrapperView中 - 这样我的导航就可以看到,用户仍然可以使用导航视图中的按钮更改视图。怎么做?

enter image description here

2 个答案:

答案 0 :(得分:4)

是。这完全有可能。 UINavigationController 只是 UIViewController 的子类。

它的视图可以作为普通视图添加到任何视图层次结构中。所以你可以做的是将导航控制器添加到你的包装器视图,然后将后续的ViewControllers添加到UINavigationController中。

所以在你的情况下你可以这样做:

    let navController = UINavigationController(rootViewController:mainVC)
    self.addChildViewController(navController)
    navController.view.frame = contentView.bounds
    contentView.addSubview(navController.view)

可以将更多视图控制器直接添加到navigationController,然后

    navController.showViewController(viewController2, sender: nil

注意:这里的self是包含你的wrapperview的viewcontroller。

答案 1 :(得分:1)

是的,可以使用UIContainerView。查看Apple's documentation了解更多详情。

您可以将容器视图作为所需的大小(在您的情况下为WrapperView大小),您将通过特殊自定义segue与视图控制器连接的视图大小。

只需将containerview从故事板拖放到viewController,您就会有更好的想法。

更新:

在viewController中添加containerView。

选择与故事板嵌入segue连接的VC旁边显示的容器视图。

来自编辑embed in navigation controller

现在将新视图控制器拖到画布上,然后从容器视图控制器ctrl +拖动到新VC,并根据容器视图的大小调整新VC的大小,当你按下它时,它将保持该大小

希望这会有所帮助:)