我正在使用以下代码在UICollectionViewCell
文件中创建自定义.xib
,但出现此错误:
由于未捕获的异常“ NSGenericException”而终止应用程序,原因:“此编码器要求从initWithCoder返回替换的对象:”
所有其他Stack Overflow解决方案都与Objective C一起使用,因此对如何做非常困惑。在我的NIB文件中,该类是在身份控制器中设置的,可重用标识符也是如此。
我正在使用的UICollectionViewCell
来自称为Gemini
的API,因此为什么将单元格称为GeminiCell
。但是Gemini
并不是问题,因为不使用NIB便可以使用。
视图控制器中的cellForItemAtIndexPath
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
// Doesn't work
let cell = Bundle.main.loadNibNamed("AlbumsCell", owner: self, options: nil)?[0] as! AlbumsCell
// Also doesn't work
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! AlbumsCell
return cell
}
自定义单元格类
class AlbumsCell: GeminiCell {
@IBOutlet weak var albumsImageView:UIImageView!
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}
答案 0 :(得分:0)
以编程方式创建单元格时,您需要使用编码器来编写init,以便任何人都可以通过使用故事板来使用您的单元格,然后通过编码器进行的init将不会通过框架调用来调用init,这就是您需要实现此初始化程序的原因>