所以我只是尝试将我的自定义单元格类与我的集合单元格链接起来。我已经在这两天工作了,无法弄清楚我做错了什么。我已经按照这方面的教程并在那里取得了成功,但无法弄清楚我在自己的项目中缺少什么。
//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”。我有视图控制器和链接到故事板的单元格。
我真的无法弄清楚我错过了什么。对不起,如果这是一个超级新问题,但我真的很难搞清楚。
感谢您的帮助!
答案 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"。