我知道那里已有问题,但我不理解他们,或者我只是不知道自己在做什么。因此,当我尝试运行我的应用程序时,我收到此错误
断言失败 - [UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:] 由于未捕获的异常而终止应用程序' NSInternalInconsistencyException',原因:'无法使类型的视图出列:具有标识符DateCell的UICollectionElementKindCell - 必须为标识符注册nib或类或连接原型单元格故事板'
我不明白为什么我会这样或如何解决它。
我有一个我已注册的细胞类
import Foundation
import UIKit
class CVCell: UICollectionViewCell {
@IBOutlet weak var myCellLabel: UILabel!
}
然后这是我的viewController:
import UIKit
class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {
private let reuseIdentifier = "DateCell"
override func viewDidLoad() {
initializeVars()
//moreDateInfo()
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return moreDateInfo()
}
// make a cell for each cell index path
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
// get a reference to our storyboard cell
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CVCell
// Use the outlet in our custom class to get a reference to the UILabel in the cell
cell.myCellLabel.text = String(startOfMonthDate)
if (startOfMonthDate == numOfDaysInThisMonth) {
startOfMonthDate = 1
} else {
startOfMonthDate++
}
//cell.backgroundColor = UIColor.yellowColor() // make cell more visible in our example project
cell.layer.borderColor = UIColor.blackColor().CGColor
cell.layer.borderWidth = 1
cell.layer.cornerRadius = 10
return cell
}
// MARK: - UICollectionViewDelegate protocol
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
// handle tap events
print("You selected cell #\(indexPath.item)!")
}
func collectionView(collectionView: UICollectionView, didHighlightItemAtIndexPath indexPath: NSIndexPath) {
let cell = collectionView.cellForItemAtIndexPath(indexPath)
cell?.backgroundColor = UIColor.blackColor()
}
// change background color back when user releases touch
func collectionView(collectionView: UICollectionView, didUnhighlightItemAtIndexPath indexPath: NSIndexPath) {
let cell = collectionView.cellForItemAtIndexPath(indexPath)
cell?.backgroundColor = UIColor.whiteColor()
}
答案 0 :(得分:1)
这一行:
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! CVCell
实际上并未注册您的CVCell类。为此,您应在registerClass:forCellReuseIdentifier:
中使用viewDidLoad
。或者,在故事板中选择单元格,在右侧的属性检查器中输入" DataCell'在"重用标识符"。
答案 1 :(得分:1)
你的手机名称错误是“DateCell”
您可能需要注册nib类,如下所示
self.collectionViewCategory.registerNib(UINib(nibName:“SelectCategoriesCell”,bundle:nil),forCellWithReuseIdentifier:reuseIdentifier)
答案 2 :(得分:1)
在我的带有原型单元格的故事板上,不需要注册该类。故事板照顾到了这一点。
答案 3 :(得分:0)
哇我有拼写错误.....永远不会忘记那些拼写错误。
private let reuseIdentifier = "DateCell"
应该是“DataCell”