使用Swift 1.1和Xcode 6.2。我有一个UIStoryboard,其中包含一个单一的自定义UIViewController子类。在它上面,我有一个从该控制器到情节提要上的子类@IBOutlet的类型连接。对于该视图的子视图,我也有类似的渠道。见图A。UIViewUIView但是在运行时,这些属性为零(图B)。即使我确信我已经连接了Interface Builder中的插座。想法:是否有可能因为我正在使用子类的子类而使初始化混乱?我没有重写任何初始化程序awakeFromNib: 由于某种原因没有被打电话也许它没有连接到子视图上的子视图我尝试过的事情:@IBOutlet完全匹配和情节提要的项目类型(而不是UIView)删除属性和出口并重新添加它们*中的模糊代码Figure A为:@IBOutlet private var annotationOptionsView: UIView!@IBOutlet private var arrivingLeavingSwitch: UISegmentedControl!谢谢。
3 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
通常发生这种情况是因为您的视图控制器尚未加载其视图层次结构。视图控制器仅在某人向其发送view
消息时才加载其视图层次结构。当需要将视图层次结构实际显示在屏幕上时,系统会执行此操作,这会在诸如此类的事情发生prepareForSegue:sender:
并viewWillAppear:
返回之后发生。
由于您的VC尚未加载其视图层次结构,因此出口仍然为零。
您可以说来强制VC加载其视图层次结构_ = self.view
。
料青山看我应如是
TA贡献1772条经验 获得超8个赞
您是从情节提要或NIB实例化视图控制器,还是直接通过初始化程序将其实例化?
如果直接用初始化程序实例化您的类,则插座将不会连接。Interface Builder创建类的自定义实例,并将这些实例编码为NIB和Storyboard,以进行重复解码,但它并未定义类本身。如果这是您的问题,则只需更改创建控制器的代码,即可使用UIStoryboard或UINib上的方法。
- 3 回答
- 0 关注
- 592 浏览
添加回答
举报
0/150
提交
取消