我得到这个错误消息时,试图加载我的项目
由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:'无法将类别的视图出列:带有标识符CustomCell的UICollectionElementKindCell-必须为标识符注册笔尖或类,或者连接情节串连板中的原型单元格。
我的代码是:
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
}
}
请帮我调试这个问题。谢谢你。
编辑:我已经为单元格添加了标识符,但错误仍然存在。
7条答案
按热度按时间ffdz8vbo1#
在
viewDidLoad
方法中:您必须使用collectionView对象注册自定义单元格类/xib名称。如果你只有类自定义类,那么你通过以下方式注册(没有xib文件)
如果你既有类,也有xib文件,那么你可以用这种方式注册
ma8fv8wu2#
这是因为您还没有将xib注册到
UICollectionView
。如果您使用Xib的UICollectionViewCell
,则必须先注册它。写下来:
bvjveswy3#
从您粘贴的代码片段来看,我没有看到您在想要出列/使用单元格之前注册它。如所述错误,使用前需要注册电池。
为了您的快速参考,请参阅下面的post -https://www.hackingwithswift.com/example-code/uikit/how-to-register-a-cell-for-uitableviewcell-reuse
截图发布后编辑
从屏幕截图中,您正在使用自定义单元格类'CustomCell',在设置正确的标识符后,请确保在右侧面板的标识检查器中将正确的类名设置为CustomCell。参考下面的屏幕截图。
jjjwad0x4#
1.如果你在脚本中使用的单元格不是XIB,那么你需要将reuseIDentifier设置为below
1.如果您使用单独的XIB作为单元格,则需要在
ViewDidLoad
中添加此行collectionView.register(UINib(nibName:“NibName”,bundle:nil),forCellWithReuseIdentifier:“reuseIdentifier”)
jgzswidk5#
这个问题有很多可能性。如果你有
collection view
的自定义类,那么它应该在identity inspector
中设置。它必须是UICollectionViewCell
的子类。并且必须在cellforitem
委托方法中示例化该子类,必须在attribute inspector
中设置适当的reusable identifier
。在您的屏幕截图中,似乎Apple calender view
是您的集合视图。如果它是第三方库,那么请确保它允许您对自定义单元格进行双端排队!并确保它是UICollectionView
的子类。nzkunb0c6#
在我的案例我正在创建一个集合视图与自定义单元格与类
这是我的自定义CollectionView类代码
通过CTRL+拖动将脚本中的所有视图连接到自定义类,将创建@IBOutlet。
我这样调用我的自定义类
self.AuctionList =具有NSDictionary内容的NSArray
玩得开心,祝你好运。随意编辑我的答案
2w3kk1z57#
我也有同样的问题。环顾四周后,我意识到我有一个小写字母“p”,而它应该是一个大写字母“P”,我用它作为一个标识符。
点击故事板上的collectionView单元格,打开右侧面板。检查属性检查器和集合可重用视图、标识符名称,还检查标识检查器、自定义类名称。