ios - IBOutlet 崩溃

标签 ios swift

我用 xib 用 swift 编写了一个自定义 View 。 View 显示正确,@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:

XIB Information

代码是:

 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 无效。 }

最佳答案

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

查看您的屏幕截图,我可以看到您在文件所有者上设置了cancelBtn socket 。 ( socket 应设置为您的自定义 View 。)

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

看看我拍摄的这张漂亮的视网膜质量屏幕截图:

Beautiful Screenshot at Retina Quality

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

关于ios - IBOutlet 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36014433/

相关文章:

ios - 如何从 AVPlayerItem 创建波浪可视化工具? (iOS)

ios - 如何使第一行有特定的名称和图像?

ios - AlamoFire 不遵守超时间隔

json - 使用 swiftyJson swift 3 解析 json

ios - 如何对齐嵌入在 UITextView 中的图像

iOS/swift : Automatically Pair With Bluetooth Classic Device

ios - 打开应用程序商店作为模型 View 打开空白页面 ios

ios - 裁剪录制的视频帧

ios - Xcode 8.0 beta 找不到这样的模块 Alamofire Swift 3.0

ios - 当 ScrollView userInteraction 禁用时,pickerview 隐藏