Swift - 无法将类视图出列:UICollectionElementKindCell

Sid*_*Sid 2 ios cocoapods swift jtapplecalendar

我在尝试加载项目时收到此错误消息

由于未捕获的异常'NSInternalInconsistencyException'而终止app,原因:'无法使类型的视图出列:具有标识符CustomCell的UICollectionElementKindCell - 必须为标识符注册nib或类或在故事板中连接原型单元'

我的代码是:

extension ViewController: JTAppleCalendarViewDelegate, JTAppleCalendarViewDataSource {
    func configureCalendar(_ calendar: JTAppleCalendarView) -> ConfigurationParameters {
        formatter.dateFormat = "yyyy MM dd"
        formatter.timeZone = Calendar.current.timeZone
        formatter.locale = Calendar.current.locale

        let startDate = formatter.date(from: "2017 01 01")!
        let endDate = formatter.date(from: "2017 12 31")!

        let parameters = ConfigurationParameters(startDate: startDate, endDate: endDate)
        return parameters
    }

    func calendar(_ calendar: JTAppleCalendarView, cellForItemAt date: Date, cellState: CellState, indexPath: IndexPath) -> JTAppleCell {
        let cell = calendar.dequeueReusableJTAppleCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
        cell.dateLabel.text = cellState.text
        return cell
    }
}
Run Code Online (Sandbox Code Playgroud)

请帮我调试这个问题.谢谢.

编辑:我已添加单元格的标识符,但仍然存在错误.

故事板

ank*_*kit 6

这是因为你还没有注册你的xib UICollectionView.如果您使用的UICollectionViewCell是Xib,则必须先注册.

In viewDidLoad: 
Run Code Online (Sandbox Code Playgroud)

写下来:

collectionView.register(UINib(nibName: "name", bundle: nil), forCellWithReuseIdentifier: "cellIdentifier")
Run Code Online (Sandbox Code Playgroud)


Bal*_*ave 6

viewDidLoad方法中:您必须使用collectionView对象注册自定义单元类/ xib名称.

如果您只有类自定义类,则按以下方式注册(无xib文件)

collectionView.register(CustomCell.self, forCellWithReuseIdentifier: "cellId")
Run Code Online (Sandbox Code Playgroud)

如果您同时拥有类和xib文件,那么您可以通过这种方式注册

collectionView.register(UINib(nibName: "CustomCell", bundle: nil), forCellWithReuseIdentifier: "cellId")
Run Code Online (Sandbox Code Playgroud)