我在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
复制相似问题