在展开可选值时,UiCollectionView Cell意外地发现了nil

时间:2016-02-15 18:34:44

标签: ios swift uicollectionview uicollectionviewcell

在这个函数中,我正在调用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的单元格。细胞可能为零的任何原因?

2 个答案:

答案 0 :(得分:1)

cellForItemAtIndexPath在屏幕上看不到该单元格时返回nil

答案 1 :(得分:0)

在cellForItemAtIndexPath中返回单元格之前,它将调用didDeselectItemAtIndexPath中的cellForItemAtIndexPath,因此单元格为nil。

不是直接调用函数,而是尝试调用selectItemAtIndexPath和deselectItemAtIndexPath。