无法将作为UICollectionView的单元格所需的视图出列

时间:2016-08-30 20:27:07

标签: ios swift uicollectionview uicollectionviewcell

我有一个带有自定义类的UICollectionView,它是UICollectionViewCell的子类。我一直收到以下错误:

  

理由:'无法将种类的观点出局:   具有标识符约定的UICollectionElementKindCell - 必须   为标识符注册一个nib或类或连接原型   故事板中的单元格

但我做了以下事情:

使用collectionView注册自定义类。

self.collectionView.registerClass(AppointmentCollectionViewCell.self, forCellWithReuseIdentifier:"Appointment");

这是我的队列:

let appointmentCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Appointment", forIndexPath: indexPath) as! AppointmentCollectionViewCell;

这就是我的AppointmentCollectionViewCell的样子:

class AppointmentCollectionViewCell: UICollectionViewCell {

    @IBOutlet weak var leftBorderView: UIView!
    @IBOutlet weak var appointmentLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    func setAppointment(appointment:Appointment){
        self.leftBorderView.backgroundColor = appointment.eventColour;
        self.appointmentLabel.textColor = appointment.eventColour;
        self.backgroundColor = appointment.eventColour.colorWithAlphaComponent(0.2);
    }

}

我也在视图中提供了重用标识符“Appointment”。

enter image description here

我也根据此处发布的答案尝试了以下内容 - 仍无效:

let appointmentNib = UINib(nibName: "AppointmentCollectionViewCell", bundle:NSBundle.mainBundle())
        self.collectionView.registerNib(appointmentNib, forCellWithReuseIdentifier: "Appointment")

谷歌搜索后,大多数人忘记注册课程。在我的情况下,我已经注册了课程,但仍然一直收到错误。我哪里错了?

2 个答案:

答案 0 :(得分:0)

如果您的单元格与xib文件相关联,则需要使用registerNib方法,而不是registerClass方法。

func registerNib(_ nib: UINib?, forCellWithReuseIdentifier identifier: String)

Documentation

你似乎也在混淆Collection Reusable View和UICollectionViewCell - 这是什么?两者都有特定的注册方法,请查看文档。

答案 1 :(得分:0)

首先检查:

  1. 您有一个具有 AppointmentCollectionViewCell

  2. 类的Xib
  3. 从课堂上获取笔尖 对于例如 UINib *favouritesNib = [UINib nibFromClass:[TNYCellRestaurantAnchorclass]];

  4. 将Nib注册到CollectionView

    [self.collectionViewName registerNib:nib forCellReuseIdentifier:@"identifier name"];