我有ViewController mainVC - 它由两部分组成 - 导航视图和包装器视图。当用户按下NavigationView中的一个按钮时 - 我的一个ViewControllers - 例如 vc 被加载到WrapperView中。
addChildViewController(vc)
//size adjustment
vc.view.frame = contentView.bounds
WrapperView.addSubview(vc.view)
我想知道是否可以将NavigationController放在WrapperView中 - 这样我的导航就可以看到,用户仍然可以使用导航视图中的按钮更改视图。怎么做?
答案 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的大小,当你按下它时,它将保持该大小
希望这会有所帮助:)