我在Storyboard中使用了自定义的CollectionViewCell。
启动应用程序后,我收到以下错误信息:
无法将类型为“UICollectionViewCell”的值强制转换为TestProject.CollectionViewCell。
我在Storyboard中使用了自定义的CollectionViewCell。
启动应用程序后,我收到以下错误信息:
无法将类型为“UICollectionViewCell”的值强制转换为TestProject.CollectionViewCell。
// Register cell classes
self.collectionView!.register(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
只需删除那一行。
在旧版本的Swift中,该行是:
// Register cell classes
self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
我面临这个问题是因为在 viewDidLoad()
中,我注册了使用 UICollectionViewCell 类的单元格。然而在我的 cellForItemAtIndexPath
中,我使用了 CustomSubcalssCollectionViewCell 来进行单元格重用。
确保 registerClass 和 dequeueReusableCell 使用的是同一个类即可解决该问题。
self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SomeUICollectionCellClass
在我的单元测试中,从Storyboard实例化ViewController
时,我遇到了此错误。
storyboard.instantiateViewControllerWithIdentifier("someVC") as! MyViewController
self.collectionView!
.register(MyCollectionViewCell.self,
forCellWithReuseIdentifier: reuseIdentifier
)
您不必删除此行。如果要使用代码注册类,则需要继承UICollectionViewCell.self
并注册自己的单元格类。
如果你在Storyboard和代码中都注册了你的cell类,你将会收到这个错误。选择其中一个即可,不要同时使用两者,问题就会消失。
我希望苹果不要在他们的模板中包含这一段代码:
self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier)