CollectionViewCell更改didSelectItemAt和didDeselectItemAt的颜色

时间:2018-07-11 15:19:15

标签: swift uicollectionview uicollectionviewcell

我正在显示一个集合视图,以便用户可以选择类别,随后我将填充TableView。

问题是,当收集单元格不在视野中时,didDeselectItemAt函数没有响应。

这是我的代码:

    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    collectionView.cellForItem(at: indexPath)?.backgroundColor = UIColor.groupTableViewBackground
    let category = catgories[indexPath.row]
    setCategory(category: category)
}
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
    collectionView.cellForItem(at: indexPath)?.backgroundColor = UIColor.clear
}

1 个答案:

答案 0 :(得分:0)

这是因为collectionView内的单元格已被重用,您需要创建数组模型并跟踪每种单元格颜色,并将其分配到Datagrid内,此

cellForRowAt

当indexPath完全超出屏幕时,请collectionView.cellForItem(at: indexPath)?.backgroundColor = UIColor.clear 并进行验证

nil

该应用将崩溃