【问题标题】:Load XIB this class is not key value coding-compliant for the key加载 XIB 此类与键的键值编码不兼容
【发布时间】:2018-12-05 23:14:10
【问题描述】:

我只是创建了名为 PopupViewForViewMoreDetail 的自定义 UIView,我想在我的 ViewController 中添加这个自定义视图,但每次都出现以下错误

由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ setValue:forUndefinedKey:]:此类与键 mainView 的键值编码不兼容。”

如果我删除 ma​​inViewIBOutlet 则另一个变量将显示错误。

下面是我的代码

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)
    }
}

我正在我的 viewController 类中添加这个视图,如下所示。

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

下面是我的IBOutlets截图

我也检查了下面的答案,但没有帮助我。

What does this mean? "'NSUnknownKeyException', reason: … this class is not key value coding-compliant for the key X"

指导我的代码哪里出错了?

【问题讨论】:

  • owner: self 更改为owner: nil
  • 我改了但没用

标签: ios swift cocoa-touch xib


【解决方案1】:

对我来说,是我复制了一个 xib 来制作一个新的变体,它取消选中从目标继承模块。

【讨论】:

    【解决方案2】:

    试试这个:

    第 1 步:

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

    第 2 步: 确保为视图设置类而不是 File's Owner

    第 3 步: 移除所有插座并重新插座

    【讨论】:

    • 将出口连接到视图,而不是文件所有者,是诀窍。谢谢!
    • @TungVuDuc 你能解释一下为什么在这里需要设置视图的类而不是文件所有者的类吗?
    • @Johnson_145 因为当您从 nib 创建 view 时,它们的子视图属于其 view 而不是文件的所有者
    • 谢谢。节省我的时间。
    • 这是唯一有效的解决方案!当心:在做了@TungVuDuc 描述的事情并且仍然得到同样的错误之后,检查指向文件所有者的出口。您可能需要删除它们,以防您在尝试使其正常工作时创建它们!
    猜你喜欢
    • 2014-01-21
    • 2018-07-13
    • 2017-09-27
    • 2015-08-27
    • 2011-03-17
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多