生成自定义 UIView 的 UINib 实例给出“不符合键值编码”错误
Posted
技术标签:
【中文标题】生成自定义 UIView 的 UINib 实例给出“不符合键值编码”错误【英文标题】:Generating UINib instance of custom UIView giving 'not key value coding-compliant' error 【发布时间】:2019-01-10 03:36:18 【问题描述】:我正在尝试将自定义 uiview 用于名为 Koloda 的 tinder 式卡片刷卡库,它要求我为堆栈中的每张卡片传入一个 uiview。我正在尝试使用具有相关字段/信息的自定义 uiview,经过彻底测试,我发现生成 uinib 实例给了我一个“不符合键值编码”的错误,尽管我的所有插座连接都在顺序。
我已经尝试重新创建我的所有 IBOutlets,甚至只是从带有新连接的新 xib 文件重新开始。当我将 uiview 拖到情节提要中的视图控制器上,并将其符合我的自定义类型时,它显示没有问题,我可以根据需要操纵它的各种属性。只有在实例化自定义视图时才会出现错误。
class VoteCard: UIView
@IBOutlet var contentView: UIView!
@IBOutlet weak var proPicImg: UIImageView!
@IBOutlet weak var nameLbl: UILabel!
@IBOutlet weak var homeLbl: UILabel!
@IBOutlet weak var ratingLbl: UILabel!
override init(frame: CGRect)
super.init(frame: frame)
commonInit()
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
commonInit()
func commonInit()
Bundle.main.loadNibNamed("VoteCard", owner: self, options: nil)
contentView.fixInView(self)
class func instanceOf() -> VoteCard
return UINib(nibName: "VoteCard", bundle: nil).instantiate(withOwner: nil, options: nil).first! as! VoteCard
如果一切正常,我的 Koloda 卡片组应该会显示我的自定义卡片,但是到目前为止我还无法通过新实例的生成。
【问题讨论】:
请复制整个错误消息并将其粘贴到您的问题中。不要重新输入,也不要遗漏任何内容。 【参考方案1】:请看这个答案:https://***.com/a/52831749/2537616
这是一个想法:
-
在 .xib 文件中设置自定义视图的 BaseClass。
照常连接插座。
然后创建静态助手来实例化 UINib。
【讨论】:
【参考方案2】:可能有一些出口是首先定义的,然后从你的班级中删除。但它们不会从您的故事板或 xib 中删除。请在您的视图中检查这些网点并将其删除。请参考图片。这里 buttonShow 不在我的视图控制器中,所以删除它。
希望对你有帮助。
【讨论】:
以上是关于生成自定义 UIView 的 UINib 实例给出“不符合键值编码”错误的主要内容,如果未能解决你的问题,请参考以下文章
从 XIB 问题动态实例化自定义 UIView(此代码有啥问题)?
故事板自定义类未实例化 UIView 类。为啥?目标 C / Xcode