【发布时间】:2015-06-02 00:04:21
【问题描述】:
使用 Swift 1.1 和 Xcode 6.2。
我有一个 UIStoryboard,其中包含一个单独的自定义 UIViewController 子类。在它上面,我有一个类型为UIView 的@IBOutlet 连接,从该控制器到情节提要上的UIView 子类。对于该视图的子视图,我也有类似的出口。见图A。
但在运行时,这些属性为零(图 B)。尽管我已经确定我已经在 Interface Builder 中连接了插座。
想法:
- 是否有可能因为我正在使用子类的子类而导致初始化混乱?我没有覆盖任何初始化程序
-
awakeFromNib:由于某种原因没有被调用 - 也许它没有连接到子视图上的子视图
我尝试过的事情:
- 完全匹配
@IBOutlet和情节提要项目类型(而不是UIView) - 删除属性和插座并重新添加它们
图A*
图B
*Figure A中的隐藏代码是:
@IBOutlet private var annotationOptionsView: UIView!
@IBOutlet private var arrivingLeavingSwitch: UISegmentedControl!
谢谢。
【问题讨论】:
-
为什么不改!到?
-
clearView 是 nil 因为没有链接到情节提要(见代码左边的圆圈有一个洞,表示没有链接),在截图中我看不到声明annotationOptionView.
-
@JavierFloresFont:
clearView我希望是零。这是我还没有重构的东西。另请参阅图 A 的脚注。@ShaanSingh 应该是!因为来自情节提要的连接(应该)在运行时设置,不应为零。 -
这个视图控制器是如何加载的?向我们展示请求它的代码,或描述连接到它的 segue。
-
它得到了正确的故事板:
let vc = UIStoryboard(name: "LocationPickerModal", bundle: nil) .instantiateViewControllerWithIdentifier("LocationPickerModalViewController") as LocationPickerModalViewController
标签: xcode swift uistoryboard null iboutlet