Ste*_*ley 45 objective-c ios segue ios6
有没有办法让一个ContainerView具有多个嵌入段?目的是让ContainerView根据按下的按钮保持几个不同的ViewControllers; 一次只能看到一个.我想使用嵌入segues,这样在Interface Builder中,故事板会自动显示与ContainerView相同的大小.
我意识到我可以手动调整InterfaceBuilder中的其他ViewControllers,但我想要嵌入segue提供的自动调整大小.如果可以采用另一种方式,那也没关系.没有在viewDidLoad上加载视图很好 - 如前所述,显示的ViewController可以根据按下的按钮进行更改.
rde*_*mar 45
不,没有办法将多个嵌入segue放到一个容器视图中.在IB中进行所有设置的一种方法是使嵌入式控制器成为UITabBarController(隐藏标签栏).然后,您可以根据需要在选项卡中包含任意数量的控制器,并使用UITabBarController的selectedIndex属性在代码中切换到它们.
小智 15
我发现这篇精彩的文章解释了如何做到这一点:http://sandmoose.com/post/35714028270/storyboards-with-custom-container-view-controllers
你得到你的容器并且可以调用后面的任何视图控制器,有一些设置可以将所有内容链接起来但是一旦完成,你就会得到一个仍然可用的故事板.
Ube*_*son 14
我认识到这个问题有点老了,但我想回答一下你还在寻找或其他人发现这个问题.我有一个类似的问题,我解决了它.
简而言之,您将拥有三个层:
- 外部视图控制器("ExternalViewController")
- 视图控制器管理器("ViewControllerManager")
- 您实际想要切换的子视图控制器("ChildViewController")
在ExternalViewController中使用容器视图,并在ViewControllerManager中嵌入segue.然后,ViewControllerManager本身将按照Apple文档中的描述以编程方式保存其他ChildViewControllers ,特别是有关添加和删除子项的部分.
添加子视图控制器时,将其框架设置为与ViewControllerManager的框架相同(因为您在ViewControllerManager中执行此操作,将子框架设置为等于self.view.frame).当然,您还需要一些逻辑和一个外部控件来进行ExternalViewController内部的切换.
希望这可以帮助!
And*_*rej 14
是的,我能够通过@rdelmar帖子实现您所寻求的灵感.您需要做的是将a嵌入UITabBarViewController到容器视图中.然后以编程方式选择要呈现的控制器.您可能还想隐藏标签栏.
如果需要,还可以隐藏故事板文件中显示的标签栏
您可以通过继承UITabBarController来选择要显示的视图控制器:
override func viewDidLoad() {
super.viewDidLoad()
self.selectedIndex = 1
}
Run Code Online (Sandbox Code Playgroud)
您可以通过调用self.tabBarController?.tabBar.hidden = trueviewDidLoad()隐藏视图控制器中的选项卡栏.