【发布时间】:2015-04-07 17:08:05
【问题描述】:
IBOutlets 发生了一些奇怪的事情。
在代码中我尝试访问此属性,但它们是nil。代码:
class CustomKeyboard: UIView {
@IBOutlet var aButt: UIButton!
@IBOutlet var oButt: UIButton!
class func keyboard() -> UIView {
let nib = UINib(nibName: "CustomKeyboard", bundle: nil)
return nib.instantiateWithOwner(self, options: nil).first as UIView
}
override init() {
super.init()
commonInit()
}
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
// MARK: - Private
private func commonInit() {
println(aButt)
// aButt is nil
aButt = self.viewWithTag(1) as UIButton
println(aButt)
// aButt is not nil
}
}
【问题讨论】:
-
除了commonInit,你还在哪里访问它们?
-
@AshrafTawfeeq 现在无处可去。我无法正常启动此类。清洁项目也无济于事
-
在初始化时尚未设置 Outlets,因为视图尚未加载。您的第二个日志有效,因为访问视图会导致它被加载。
-
@rdelmar 视图已经加载,我可以和他一起工作。但似乎插座没有连接。如果我在初始化后立即从
ViewController直接调用commonInit,aButt不为零。 -
我花了几个小时试图解决类似的问题。在我明白我将插座连接到错误的视图之前:)