如何在故事板中嵌套视图控制器

How to nest a view controller in Storyboard

是否有 Android 中用于 IOS 应用程序片段的替代品?例如,我想创建一个带有侧边栏的视图。所以,我有一个包含 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 的新手,所以可能缺少一些常见功能。

UIKit 中最接近的东西可能是容器视图控制器:

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

You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running (sort of like a "sub activity" that you can reuse in different activities).

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

Container view controllers promote better encapsulation by separating out your content from how you display that content onscreen. Unlike a content view controller that displays your app’s data, a container view controller displays other view controllers, arranging them onscreen and handling navigation between them.

第 1 步

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

第 2 步

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

第 3 步

将容器视图控制器用作独立容器。

我为您制作了一个演示项目:https://github.com/atapp/ContainerDEMO