我在swift中用xib写了一个自定义视图。视图显示正确,@IBOutlet
也正确。但是当我添加2016-03-15 22:32:16.650 ****[42692:1015001] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x7f8ea483cd30> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key cancelBtn.'
时,应用会崩溃。
错误消息是:
class PYChangeNameView: UIView {
var confirmAction: ((name: String?) -> ())?
var cancelAction: (() -> ())?
@IBOutlet weak var cancelBtn: UIButton!
private init() {
super.init(frame: CGRectZero)
if let view = UIView.loadFromNibNamed("PYChangeNameView") {
view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
self.frame = UIScreen.mainScreen().bounds self.addSubview(view)
}
}
@IBAction func cancelClick(sender: AnyObject) {
PYCNVStaticValues.sharedInstance?.removeFromSuperview()
PYCNVStaticValues.cancelAction?()
}
}
和xib:
代码是:
@IBAction
@IBOutlet
有效,但[Object { OldData="(3) Lindrigt skadad", NewData="(9) Uppgift saknas", AccidentNumber=1173590}]
不起作用。
}
答案 0 :(得分:3)
查看错误:它告诉您NSObject
没有cancelBtn
字段。为什么会这样呢?
查看截图,我可以看到您cancelBtn
上设置了File's Owner
个插座。 (插座应设置为您的自定义视图。)
因此,我可以断定您的File's Owner
对象未与PYChangeNameView
正确关联,运行时认为它只是NSObject
。我相信您需要将该类设置为XIB中的类型 - 可能在右侧的控件中。
查看我拍摄的这张美丽的Retina品质截图:
可能还需要设置模块字段。您可以从this answer获得一些见解。
答案 1 :(得分:0)