为什么我不能将UICollectionViewCell转发为其子类?

时间:2016-04-29 15:52:13

标签: swift casting uicollectionview

我正在制作一个集合视图,并制作了我自己的自定义collectionCell。我已经在身份检查员中指明了这一点,据我所知,我已经做好了一切。

代码是

import UIKit

class SubjectCollectionViewCell: UICollectionViewCell {
    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var label: UILabel!
}

和我的collectionViewController

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! SubjectCollectionViewCell

    return cell
}

我收到以下错误消息

“无法将'UICollectionViewCell'类型的值(0x110460820)转换为'project.SubjectCollectionViewCell'(0x10eceeda0)。 (LLDB)“

3 个答案:

答案 0 :(得分:12)

请参阅:Could not cast value of type 'UICollectionViewCell'

如果你在collectionViewController中看到这个,请删除它。 self.collectionView!.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

答案 1 :(得分:3)

在viewDidLoad()中,Xcode会自动生成这样的一行来定义单元格:

  

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

你正在创建自己的方法来执行此操作,因此,您需要在viewDidLoad()中删除由Xcode自动生成的行

答案 2 :(得分:-2)

您是否注册了reuseIdentifier,以便创建正确类的对象?