加载自定义CollectionViewCell Nib时出现initWithCoder错误

时间:2019-02-19 17:56:10

标签: swift

我正在使用以下代码在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)
    }
}

1 个答案:

答案 0 :(得分:0)

以编程方式创建单元格时,您需要使用编码器来编写init,以便任何人都可以通过使用故事板来使用您的单元格,然后通过编码器进行的init将不会通过框架调用来调用init,这就是您需要实现此初始化程序的原因