我有一个带有 XIB 的自定义 UIView
。这个自定义 UIView
有一个 UICollectionView
连接到一个 IBOutlet
。在 View 设置中,UICollectionView
已正确初始化并且不是 nil。
但是在 cellForItemAtIndexPath
方法中,我得到这个错误:-
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key selectorCollectionView.'
如果我删除数据源和委托(delegate),我不会收到任何错误。如果我添加它们,我会在这一行出现错误:-
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "selectorCell", for: indexPath) as! SelectorCell
请帮忙!
编辑:我附上了我的设置截图
我也在这里上传了项目http://www.fast-files.com/getfile.aspx?file=148623
最佳答案
可能是同步问题。有时会发生:
尝试松开 socket 并重新连接。
确保 Collection View 单元格的自定义类在 xib 文件中定义:
编辑: 我深入研究了您的项目,这是我的发现
UICollectionView 应该在 awakeFromNib
方法中初始化(覆盖它):
override func awakeFromNib() {
super.awakeFromNib()
let cellNib = UINib(nibName: String(describing: "SelectorCell"), bundle: nil)
selectorCollectionView.register(cellNib, forCellWithReuseIdentifier: "selectorCell")
selectorCollectionView.dataSource = self
selectorCollectionView.delegate = self
}
loadViewFromNib 应该看起来像这样(删除 Collection View 初始化'):
func loadViewFromNib() -> UIView {
let nib = UINib(nibName: "SelectorView", bundle: nil)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
return view
}
同样是 SelectorTableViewCell 的子类。
class SelectorTableViewCell: UITableViewCell {
@IBOutlet weak var selectorView: SelectorView!
}
在 Main.storyboard
中 - 自定义类 UITableViewCell
到 SelectorTableViewCell
并连接 SelectorView
inside contentView
到“SelectorTableViewCell”的导出。
我想就是这样。 Here是项目:
关于ios - 带有 UICollectionView 的 xib - 不符合键值编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47183879/