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

8

我有一个基本的视图控制器,它像我的“蓝图”一样创建更多的视图控制器来向用户展示(注册/登录/重置密码等)。这个基本的视图控制器有一个容器视图。

我有许多小的视图控制器,我想将它们放到基本视图控制器的容器视图中,就像这样:

enter image description here

如何在容器视图中使用不同的视图控制器?如何指定我可以在容器视图中使用哪个小视图控制器?我可能可以使用故事板ID /转场,但我不知道如何操作。有什么提示吗?


你可以使用Storyboard的segues并处理这些segues的名称来确定哪个vc将在你的容器视图中。 - Reinier Melian
非常感谢@ReinierMelian。如果您能通过一个SO问题或几行代码指导我,我将不胜感激。 - Cesare
您需要一个 Github 的例子吗? - Reinier Melian
当然,@ReinierMelian!我会感激的。不幸的是,我目前没有 GitHub 的示例。 - Cesare
2个回答

12

嗨,cesare,问题可以通过在基类中获取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()
        } 

以下是参考链接:

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


2
您只能从容器视图到另一个视图控制器有一个嵌入式转场。因此,最好的方法是您可以让该视图控制器显示动态内容。
然而,如果您喜欢在故事板上拥有静态视图控制器,您可以将选项卡栏控制器嵌入到容器视图中。您可以将所有视图控制器作为选项卡之一。之后,您只需要先隐藏选项卡栏,然后使用tabBarController.selectedIndex = yourIndex决定要显示哪个选项卡。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接