2

我有一个标准的扩展 UIViewController(称为 ParentViewController 或 PVC),并希望有一个由 ChildViewController 或 CVC 驱动的容器或子视图。

我以编程方式看到,在 PVC 中我可以调用 addChild:CVC 并管理诸如 didMoveToParentViewController 等调用。但是,我希望有一种方法可以使用 Interface Builder 来做到这一点。

所以我布置了一个 PVC 的实例,然后将一个 ContainerView 拖到 PVC 的视图上,这会创建一个到子窗口的 segue。在那个窗口中,我分配了 ChildViewController 的类类型。到目前为止这看起来很棒,但是我如何以编程方式从 PVC 中引用它?让我们尝试通常的做法:在 PVC 类扩展中,我声明:

@property (nonatomic, strong) IBOutlet ChildViewController* cvc;

当我切换到 IB 并突出显示 PVC 实例并选择连接检查器时,我看到了我的 cvc 属性,但我无法将它连接到我的 containerView 实例(即使它的类类型设置正确)。它允许我拖动(画线),但不允许我实际连接它。为什么??

我在想这对 IB 来说是不可能的,但也许我看错了?

我已经阅读了Apple 关于子视图的文档,如果我无法让 IB 做我想做的事情,我准备以编程方式执行此操作。

4

1 回答 1

3

cvc 是 PVC 的子视图控制器,因此您可以使用 childViewControllers 属性获取对它的引用,您可以在代码中执行此操作,而不是在 IB 中连接插座。在 PVC 的 viewDidLoad 方法中,执行以下操作:

self.cvc = (ChildViewController *)self.childViewControllers[0];

Xcode 不允许您在两个不同的控制器之间连接插座,因此即使 cvc 作为子视图控制器嵌入,它仍然是不同的视图控制器。

于 2013-02-21T17:29:56.463 回答