Ios IBOutlet的崩溃

Ios IBOutlet的崩溃,ios,swift,Ios,Swift,我在swift中编写了xib的自定义视图。视图显示正确,@IBAction也正确。但是当我添加一个@IBOutlet,应用程序就会崩溃 错误消息是: 2016-03-15 22:32:16.650 ****[42692:1015001] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x7f8ea483cd30> setValue:forUndefi

我在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.'
@IBAction
工作,但
@IBOutlet
不工作。
}

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

查看您的屏幕截图,我可以看到您在
文件的所有者
上设置了
cancelBtn
出口。(应将插座设置为自定义视图的任意值。)

因此,我可以得出结论,您的
文件的所有者
对象没有与您的
PYChangeNameView
正确关联,运行时认为它只是一个
NSObject
。我相信您需要将该类设置为XIB中的类型-可能在右侧的控件中

查看我拍摄的这张美丽的视网膜质量屏幕截图:


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

检查以确保视图的
xib
PYChangeNameView


xib中的按钮是否实际命名为“cancelBtn”?根据操作名称和错误消息,我猜它名为“cancel”。您可以看到图片,该按钮名为“cancelBtn”。您是否在任何其他位置为该按钮添加了IBOutlet?@HugoAlonso否,我在项目中搜索了“cancelBtn”键,只有这个地方。说的是
NSObject…setValue:forUndefinedKey:
而不是例如
UIViewController…setValue:forUndefinedKey:
,这不是很有趣吗。你的文件所有者是什么样子的?我想你是对的,我(慢慢地)得出了相同的结论,只是需要确定:-)@QED我如何才能正确地与PYChangeNameView关联?@PlutoY我添加了一个漂亮的视网膜质量屏幕截图来向你展示。@QED是文件所有者吗?如果是的话,我已经设置好了。@PlutoY它应该是自定义视图中的任何一个。如果它说的是Module,实际上它与Noneya不同,你的Module应该是你的项目名称。不是“无”,您也可以尝试删除您的插座连接并控制将其拖回。@Daniellonard是的,这是我创建oulet的方式。而
模块
也是我的项目名称。
 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?()
  }
}