在容器视图中嵌入多个视图控制器

时间:2017-07-09 10:06:56

标签: ios swift storyboard

我有一个基本视图控制器,就像我的"蓝图"创建更多视图控制器以显示用户(注册/登录/重置密码/等)。该基本视图控制器具有容器视图。

我有很多小视图控制器,我想要基本视图控制器的容器视图,如下所示:

enter image description here

如何为容器视图使用不同的视图控制器?如何在容器视图中指定可以使用的迷你视图控制器?我可以使用故事板ID / segues,但我不知道如何。有什么提示吗?

2 个答案:

答案 0 :(得分:8)

您好cesare可以通过在baseClass中使用containerView来解决问题,您可以在其中使用三个不同的viewControllers。

请找到这些简单的教程,您可以在其中以编程方式添加或删除子viewController

        private func add(asChildViewController viewController: UIViewController) {
            // Add Child View Controller
            addChildViewController(viewController)

            // Add Child View as Subview
            view.addSubview(viewController.view)

            // Configure Child View
            viewController.view.frame = view.bounds
            viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]

            // Notify Child View Controller
            viewController.didMove(toParentViewController: self)
        }

        private func remove(asChildViewController viewController: UIViewController) {
            // Notify Child View Controller
            viewController.willMove(toParentViewController: nil)

            // Remove Child View From Superview
            viewController.view.removeFromSuperview()

            // Notify Child View Controller
            viewController.removeFromParentViewController()
        } 

For reference you can find this github project 

https://github.com/bartjacobs/ManagingViewControllersWithContainerViewControllers/blob/master/ViewControllerContainment/MasterViewController.swift

答案 1 :(得分:2)

您只能将一个从容器视图嵌入segue到另一个视图控制器。因此,最好的方法是让一个视图控制器显示动态内容。

但是,如果您希望在故事板上安装静态视图控制器,则可以执行的操作是将标签栏控制器嵌入到容器视图中。您已将所有视图控制器作为其中一个选项卡。之后,您需要做的就是首先隐藏标签栏,然后决定使用tabBarController.selectedIndex = yourIndex显示哪个标签