UICollectionView.dequeueReusableCell崩溃

时间:2017-08-28 06:44:15

标签: ios swift uicollectionview

alert(selectedItemText); // Show "AAABBBBCCCCC" // But I want "AAA\nBBBB\nCCCCC" How to split selectedItemText by new line? 我注册了这样的单元格:

viewDidLoad

并在我let cellIdentifier = "Cell" override func viewDidLoad() { super.viewDidLoad() let cellNib = UINib(nibName: "ViewCell", bundle: nil) collection.register(cellNib, forCellWithReuseIdentifier: cellIdentifier) } 的{​​{1}}中执行:

cellForItemAt

唯一的问题可能是代码是Mixed Swift / ObjC,UICollectionViewDataSource是ObjC并在桥接头中导入:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    // It crashes while trying to dequeue with the Error message:  Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:]
    let dequedCell = collection.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath)
    return dequedCell
}

我收到以下错误:

  

***断言失败 - [UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewC ategory:],   /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UI洁3600.7.47 / UIColl ectionView.m:5106

我确保所有名字都是正确的。有谁知道为什么会发生这种崩溃?

3 个答案:

答案 0 :(得分:1)

将集合视图单元格标识符设置为故事板中的单元格。

enter image description here

答案 1 :(得分:1)

这是问题

1)您需要在XIB中注册小区标识符,

2)将班级名称分配给XIB

3)你需要检查的行的单元格?出列的YourClass和

4)使用您分配给XIB的相同标识符出列并注册

答案 2 :(得分:0)

  

有谁知道为什么会发生这种崩溃?

要考虑的一件事是register(_:forCellWithReuseIdentifier:) the docs说:

  

nib文件必须只包含一个顶级对象,该对象必须是UICollectionViewCell类型。

所以,检查那是真的。换句话说......

let nibObjects = cellNib.instantiate(withOwner: nib, options: nil)
let count = nibObjects.count  // is this 1?
let view = nibObjects.first   // is view a UICollectionViewCell?