【问题标题】:Embed multiple view controllers in a container view在容器视图中嵌入多个视图控制器
【发布时间】:2017-12-13 04:42:32
【问题描述】:

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

我有许多小视图控制器,我希望它们用于我的基本视图控制器的容器视图,如下所示:

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

【问题讨论】:

  • 您可以使用故事板的 segues 并处理这些 segues 的名称来确定 vc 将在您的容器视图中出现
  • 非常感谢@ReinierMelian。如果您能通过一个 SO 问题/几行代码为我指明正确的方向,我将非常感激。
  • 一个 github 示例适合你吗?
  • 当然是@ReinierMelian!我会很感激的。不幸的是,我目前没有 GitHub 示例。

标签: ios swift storyboard


【解决方案1】:

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

请找到这些简单的教程,您可以在其中以编程方式添加或删除子 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()
        } 

你可以找到这个github项目作为参考

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多