将 ViewController 嵌入 Storyboard 中的另一个 ViewController

Posted

技术标签:

【中文标题】将 ViewController 嵌入 Storyboard 中的另一个 ViewController【英文标题】:Embedding ViewController insider another ViewController in Storyboard 【发布时间】:2012-07-07 06:55:25 【问题描述】:

如何使用 Interface Builder 中的 ios5 ViewController 容器(在故事板上)?

iOS 文档是这样说的(UIViewController -> View Management -> Storyboards):

例如,您可以声明一个视图控制器的内容包含在另一个视图控制器中

【问题讨论】:

您只能在 iOS 5 中将内容嵌入到 UINavigaitionControllerUITabBarController 中。要将视图控制器的内容嵌入故事板中的任意容器视图控制器中,您需要使用 iOS 6。 .. 如何在 IB 的 UINavigationController 中嵌入内容? 在storyboard中选择控制器,然后从菜单中选择Editor->Embed In->Navigation Controller 相关问题:Linking child view controllers to a parent view controller within storyboard 【参考方案1】:

来自 Interface Builder(又名 Storyboard 编辑器)的 Xcode 11.7

    按住 CtrlClick(即右键单击的macOS 版本)在您的目标Controller(您希望将其嵌入到其他Controller)。 在弹出菜单中,从Presenting Segues 部分,将Embed 选项前面的圆圈拖到您的来源Controller。 最后会出现另一个弹出菜单,选择viewDidLoad选项(如果有多个选项)。

【讨论】:

【参考方案2】:

iOS 中的 ViewController 只是一个绑定到视图的对象。界面构建器中的视图控制器可以拥有一百万个视图控制器作为属性,尽管没有理由这样做,除非连接到视图控制器的视图具有一百万个子视图并且它们都需要自己的控制器。

您不能声明 iOS 中有视图控制器包含。这是没有意义的。 请理解,视图控制器只包含一个视图和您添加到其中的任何插座或代码。

它可以加载并显示另一个视图控制器。它可以保存对另一个视图控制器的引用。 但是视图控制器不会通过任何分层方式包含另一个视图控制器。

【讨论】:

UIViewControllers 可以有父子关系,这是一种层次关系。包含可能不是准确的词,但是具有子视图控制器的视图控制器是可能的,它们被 UIViewController API 广泛使用和支持。 UIViewController 上的方法显示父/子关系的层次结构removeFromParentViewControlleraddChildViewController

以上是关于将 ViewController 嵌入 Storyboard 中的另一个 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

如何将嵌入式collectionView中选定单元格的值传递给另一个viewController?

从父 ViewController 更改嵌入 TableViewController 的数据

从嵌入式子UIViewController中获取Parent ViewController

我已将 ViewController 嵌入选项卡栏控制器中,现在我的 coreDataStack.managedContext 失败

在 XIB 中连接 UIView 并使用 Story board 中的 View Controller 加载它

如何从 ViewController 中分离(推送)到 NavigationController 中嵌入的另一个 ViewController?