自定义集合单元错误

时间:2014-12-02 22:19:42

标签: ios swift uicollectionview uicollectionviewcell

所以我只是尝试将我的自定义单元格类与我的集合单元格链接起来。我已经在这两天工作了,无法弄清楚我做错了什么。我已经按照这方面的教程并在那里取得了成功,但无法弄清楚我在自己的项目中缺少什么。

//WORKING 
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as UICollectionViewCell

//Crashes
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as ChampionViewCell

即使我尝试创建一个没有任何其他内容的新项目,我也遇到了这个问题。当我链接我的自定义单元类时,应用程序崩溃。

这是我的自定义单元格类:

import UIKit
class ChampionViewCell: UICollectionViewCell {
    @IBOutlet weak var champImage: UIImageView!
}

我的单元格标识符在故事板中和CollectionViewController文件的顶部设置为“ChampionCell”。我有视图控制器和链接到故事板的单元格。

我真的无法弄清楚我错过了什么。对不起,如果这是一个超级新问题,但我真的很难搞清楚。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

为了使dequeueReusableCellWithReuseIdentifier实例化自定义单元格,您必须使用此UICollectionView方法注册单元类:

func registerClass(_ cellClass: AnyClass?, forCellWithReuseIdentifier identifier: String)

只需在viewDidLoad方法中调用该方法即可。

该方法应按以下方式调用:

self.collectionView.registerClass(ChampionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

其中reuseIdentifier是包含单元格标识符的变量/属性。

答案 1 :(得分:0)

在您的故事板上,单元格的类需要设置为ChampionViewCell。当单元格出列时,它会使用给定的标识符(在您的情况下为ChampionCell)从故事板中将单元格出列。但是出列的单元仍然是UICollectionViewCell

在故事板上,选择单元格,然后在“检查器”面板(右侧面板)中,选择“身份检查器”(看起来有点像报纸的那个)。 " Class"应该说" UICollectionViewCell"。将其更改为" ChampionViewCell"。