IBOutlet的崩溃

时间:2016-03-15 14:42:22

标签: ios swift

我在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:

XIB Information

代码是:

@IBAction

@IBOutlet有效,但[Object { OldData="(3) Lindrigt skadad", NewData="(9) Uppgift saknas", AccidentNumber=1173590}] 不起作用。     }

2 个答案:

答案 0 :(得分:3)

查看错误:它告诉您NSObject没有cancelBtn字段。为什么会这样呢?

查看截图,我可以看到您cancelBtn上设置了File's Owner个插座。 (插座应设置为您的自定义视图。)

因此,我可以断定您的File's Owner对象未与PYChangeNameView正确关联,运行时认为它只是NSObject。我相信您需要将该类设置为XIB中的类型 - 可能在右侧的控件中。

查看我拍摄的这张美丽的Retina品质截图:

Beautiful Screenshot at Retina Quality

可能还需要设置模块字段。您可以从this answer获得一些见解。

答案 1 :(得分:0)

检查以确保您的观看次数xibPYChangeNameView

like This