加载XIB此类不符合密钥的密钥值编码要求

Gov*_*iyo 3 cocoa-touch xib ios swift

我只是UIView用名称创建自定义,PopupViewForViewMoreDetail我想在我的ViewController中添加此自定义视图,但是每次出现以下错误时

由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:[[<0x7f8155f2e430> setValue:forUndefinedKey:]:此类不符合键mainView的键值编码标准。

如果我删除mainView的IBOutlet ,那么另一个变量将显示错误。

下面是我的代码

import UIKit

class PopupViewForViewMoreDetail: UIView {

    @IBOutlet var darkBGView: UIView!
    @IBOutlet var outerView: UIView!
    @IBOutlet var mainView: UIView!
    @IBOutlet var btnClose: UIButton!

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}
Run Code Online (Sandbox Code Playgroud)

并将此视图添加到我的viewController类中,如下所示。

 let viewMoreDetailPopUp =  Bundle.main.loadNibNamed("PopupViewForViewMoreDetail", owner: self, options: nil)?.first as! PopupViewForViewMoreDetail
        self.view.addSubview(viewMoreDetailPopUp)
Run Code Online (Sandbox Code Playgroud)

以下是我的IBOutlets屏幕截图

在此处输入图片说明

我还检查了以下答案,但没有帮助我。

这是什么意思?“'NSUnknownKeyException',原因:……此类与密钥X的键值编码不兼容”

引导我代码出错的地方?

Tun*_*Duc 12

尝试这个 :

步骤1:

let viewMoreDetailPopUp =  UINib(nibName: "PopupViewForViewMoreDetail", bundle: nil).instantiate(withOwner: self, options: nil).first as! PopupViewForViewMoreDetail
Run Code Online (Sandbox Code Playgroud)

步骤2:确保为视图设置类,而不是文件的所有者在此处输入图片说明

在此处输入图片说明

步骤3:移除所有插座,然后再次重新插座

  • 诀窍是将出口连接到视图而不是文件所有者。谢谢! (5认同)
  • 这是唯一有效的解决方案!当心:在完成@TungVuDuc 描述的事情后仍然出现相同的错误,请检查文件所有者指向的插座。您可能需要删除它们,以防您在尝试使其工作时创建它们! (2认同)