【发布时间】:2012-09-13 10:38:38
【问题描述】:
我正在使用故事板instantiateViewControllerWithIdentifier:,我注意到我连接的所有IBOutlets 仍然为零。但是,IBActions 我已经完成了工作。视图和控制器是链接的(即 controller.view 不是 nil),如果我显示视图,它会显示我所期望的。
我错过了什么?
这是我的设置:
- 我的情节提要中定义了一个视图控制器。我给了它一个标识符,它与我在调用
instantiateViewControllerWithIdentifier:时使用的标识符相同 - 我通过单击视图控制器(就在 First Responder 下方)设置了视图的所有者,并在 Identity Inspector 下将自定义类设置为与我想将视图连接到的类的名称相同。李>
- 然后我打开助手编辑器,控制拖动UI元素创建
IBOutlets和IBActions。
【问题讨论】:
-
我尝试将视图拆分为它自己的笔尖,但我看到了同样的问题。 initWithNibName:bundle: 似乎也没有设置 IBOutlets,即使它们是通过 IB 中的 ctrl-click-drag 定义的。
-
作为一种解决方法,我正在使用 [[NSBundle mainBundle] loadNibNamed:@"myNib" owner:controller options:nil]。这确实会加载 nib 并将 IBOutlets 分配给控制器中的值。但是当控制器上有一个方法看起来在做同样的事情时,这似乎是错误的。
-
我对你的设置有点困惑,你为什么要设置视图的所有者?您的 ib 插座被放置在故事板上的视图控制器中,对吗?当您实例化此视图控制器时,如果您设置此 VC 的类型以匹配您的自定义标头和实现,则插座应该可以工作。
-
更正:我没有设置视图的所有者,而是视图控制器类类型匹配自定义类类型。
-
如果您控制点击情节提要中视图控制器的图标表示以显示连接 HUD,您是否看到所有插座都已连接?
标签: ios interface-builder uistoryboard