如何在界面构建器中创建容器/子视图控制器关系

ggo*_*d75 7 interface-builder uiviewcontroller uistoryboardsegue childviewcontroller container-view

要从代码创建两个视图控制器之间的父/子关系,基本上只需执行以下操作:

[self addChildViewController:childViewController];
[self.view addSubview:childViewController.view];
Run Code Online (Sandbox Code Playgroud)

其中self是父视图控制器.
但是,如果我想完全从Interface Builder创建相同的关系呢?
或者换句话说:有没有办法使用Interface Builder重新创建方法addChildViewController的行为?
我没有找到很多关于这方面的文档,这是一篇关于该主题的未解决的帖子:https://devforums.apple.com/message/455758#455758

如果没有正确设置addChildViewController关系,任何旋转方法都不会转发到我的子视图控制器,这是我的问题所在.

这就是我在IB中所做的:

  1. 将"视图控制器"对象从"对象库"面板拖放到"对象"面板中
  2. 在身份检查器中,我已将其类更改为我的UIViewController子类("Items View Controller")
  3. 将视图插座连接到控制器
  4. 将所有其他所需的插座连接到控制器(列表名称,表视图)

图片中的第一个"View"对象是我的父视图控制器的视图,而突出显示的"View"是子视图控制器的视图("Item View Controller").

在此输入图像描述

容器控制器还通过另外的IBOutlet保留其子实例:

@property (nonatomic, strong) IBOutlet ItemsViewController *itemsViewController;
Run Code Online (Sandbox Code Playgroud)

谢谢


更新1:如果我在容器控制器的viewDidLoad中手动设置父/子关系,则所有旋转方法都会正确转发给子项.

[self addChildViewController:self.itemsViewController];
Run Code Online (Sandbox Code Playgroud)

但我真的不知道这是否是正确的做法,因为我想用IB做所有事情.


更新2:感谢@micantox提示他使用对象库中的"容器视图",我已将我的xib文件转换为Storyboard,现在子视图控制器已添加到其父级,所以我没有必要使用addChildViewController从代码中手动添加它,并按预期转发旋转方法.
"容器视图"基本上实现了嵌入segue,仅支持iOS 6.
这是我的Storyboard更新的截图:

在此输入图像描述

mic*_*tox 19

为子视图控制器创建容器视图的正确方法是使用对象库中的对象"容器视图".在View Controller的场景中拖动一个将为子视图控制器创建一个新场景,该场景可以与父视图控制器分开管理.