首页 > 解决方案 > 如何在 Storyboard 中嵌套视图控制器

问题描述

IOS 应用程序在 Android 中是否有 Fragments 的替代品?例如,我想创建一个带有侧边栏的视图。所以,我有一个包含 2 个其他视图的容器。现在,我正在以编程方式做所有事情。就像创建 3 个视图控制器:用于容器、侧边栏和主屏幕。我稍后使用 addSubView 方法添加 2,但我想将视图控制器嵌套在情节提要中,而不是以编程方式添加视图控制器。我可以以编程方式嵌套视图控制器,但想使用拖放界面来做同样的事情。

我正在使用以下代码添加子视图:

        let homeController = HomeController()
        homeController.delegate = self
        centreController = UINavigationController(rootViewController: homeController)

        view.addSubview(centreController!.view)
        addChild(centreController!)
        centreController?.didMove(toParent: self)

那么,有没有办法使用故事板获得相同的效果?我是 IOS 新手,所以可能缺少一些常见功能。

标签: iosuiviewcontroller

解决方案


UIKit 中最接近的可能是 Container View Controller:

来自 Android 开发者文档(片段):

您可以将片段视为活动的模块化部分,它有自己的生命周期,接收自己的输入事件,并且可以在活动运行时添加或删除(有点像“子活动”,您可以在不同的活动中重复使用)。

来自 IOS 开发人员文档(容器视图控制器):

容器视图控制器通过将您的内容与您在屏幕上显示该内容的方式分开来促进更好的封装。与显示应用数据的内容视图控制器不同,容器视图控制器显示其他视图控制器,将它们排列在屏幕上并处理它们之间的导航。

容器视图控制器

步骤1

UIContainerView像普通视图一样从组件选择库中拖动。Xcode 将为它创建一个新的 ViewController。

在此处输入图像描述

第2步

将普通视图约束添加到容器视图中,与任何视图组件相同。

第 3 步

将 Container View Controller 用作独立的容器。

在此处输入图像描述

我为你做了一个演示项目:https ://github.com/atapp/ContainerDEMO


推荐阅读