在这个函数中,我正在调用didSelectItemAtIndexPath
来通知集合视图我想要选择某些单元格:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
//some code here
....
//cell!.contentView.addSubview(pulseView)
if (strings_chosen[indexPath.row] as! Bool) {
self.collectionView(self.collectionView!, didSelectItemAtIndexPath: indexPath)
cell!.backgroundColor = MaterialColor.grey.lighten1;
} else {
cell!.backgroundColor = MaterialColor.white
self.collectionView(self.collectionView!, didDeselectItemAtIndexPath: indexPath)
}
...
}
但是我在这里得到nil
(对于cell
)。具体而言,错误为fatal error: unexpectedly found nil while unwrapping an Optional value
:
override func collectionView(collectionView: UICollectionView, didDeselectItemAtIndexPath indexPath: NSIndexPath) {
let cell:UICollectionViewCell? = collectionView.cellForItemAtIndexPath(indexPath)
cell!.selected = false; //THIS LINE IS GIVING ME AN ERROR
strings_chosen[indexPath.row] = false;
cell!.backgroundColor = MaterialColor.white
updateDeleteButtonTitle()
}
我不明白为什么cell
为零,我很确定我正在抓取正确indexPath的单元格。细胞可能为零的任何原因?
答案 0 :(得分:1)
cellForItemAtIndexPath
在屏幕上看不到该单元格时返回nil
。
答案 1 :(得分:0)
在cellForItemAtIndexPath中返回单元格之前,它将调用didDeselectItemAtIndexPath中的cellForItemAtIndexPath,因此单元格为nil。
不是直接调用函数,而是尝试调用selectItemAtIndexPath和deselectItemAtIndexPath。