我在swift中用xib写了一个自定义视图。视图显示正确,@IBAction
也是正确的。但是当我添加一个@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.'
和xib:
代码是:
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?()
}
}
@IBAction
工作正常,但@IBOutlet
无法正常工作。}
发布于 2016-03-15 23:40:20
看一下错误:它告诉您NSObject
没有cancelBtn
字段。为什么会这样呢?
查看您的屏幕截图,我可以看到您的File's Owner
上设置了cancelBtn
插座。(插座应该设置为您的自定义视图。)
因此,我可以得出结论,您的File's Owner
对象没有正确地与您的PYChangeNameView
关联,并且运行时认为它只是一个NSObject
。我认为您需要在您的XIB中将该类设置为类型-可能是在右侧的控件中。
看看我捕捉到的这张漂亮的视网膜质量的屏幕截图:
可能还需要设置Module字段。您可能会从this answer获得一些见解。
发布于 2016-03-15 23:45:49
检查以确保视图的xib
为PYChangeNameView
https://stackoverflow.com/questions/36014433
复制相似问题