无法转换“UICollectionViewCell”types的值

我在Storyboard中使用自定义的CollectionViewCell。 当我启动应用程序时,我收到以下消息:

无法将types为“UICollectionViewCell”的值转换为TestProject.CollectionViewCell。

Xcode 6中CollectionViewController的模板在viewDidLoad中附带了这一行代码,它改变了storyboard中的规范。

// Register cell classes self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 

只需删除它。

我面对这个问题,因为在viewDidLoad()我注册我的细胞与UICollectionViewCell类。 在我的cellForItemAtIndexPath使用CustomSubcalssCollectionViewCell dequeueReusableCell。

确保registerClassdequeueReusableCell是相同的类来解决问题

 self.registerClass(SomeUICollectionCellClass.self, forCellWithReuseIdentifier: reuseIdentifier) let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SomeUICollectionCellClass 

在unit testing中从Storyboard实例化ViewController时,我遇到了这个错误。

 storyboard.instantiateViewControllerWithIdentifier("someVC") as! MyViewController 

问题是我已经在“标识”检查器中为故事板中的VC分配了一个特定的模块。 我删除它,所以它默认为当前模块,它是运行时的应用程序模块和testing模块。

当自定义类(在Xcode检查器上)仍将其类设置为默认的UICollectionViewCell而不是我的自定义类TestProject.CollectionViewCell时,我收到此错误。

要修复它,只需将自定义类更改为您的实现。

自定义类部分

文档大纲

  self.collectionView!.register(MyCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier) 

你不必删除这一行。 如果要使用代码注册类,您将注册由UICollectionViewCell.selfinheritance的自己的单元类