请耐心等待我,因为我是快速编程的新手。
我有一个myCollectionViewController
,它是UICollectionViewController
的子类。 MyCollectionViewController
的单元格属于MyCollectionViewCell
,这是自定义UICollectionViewCell
。
我要做的是根据用户选择更改MyCollectionViewCell
的背景,并在用户滚动到MyCollectionViewController
的其他单元格时保持此选择。我尝试了两种方法,到目前为止两种方法都失败了。
第一种方法是在didSelectItemAt
的{{1}}方法中编写代码:
MyCollectionViewController
然而,这不起作用,细胞颜色没有改变。
我尝试这样做的另一种方法是更改func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "myCell", for: indexPath) as! MyCollectionViewCell
cell.contentView.backgroundColor = UIColor.red
}
的{{1}}属性。
isSelected
虽然这有效,但选择并没有持续下去。也就是当用户滚动到MyCollectionViewCell
中的另一个单元格然后向后滚动时,选择就消失了。
任何建议都将受到赞赏。
答案 0 :(得分:1)
请勿在{{1}}中使用dequeue,因为它会返回除点击后的其他单元格
didSelectItemAt
并在cellForItem中检查要显示的索引路径是否在数组中并为其着色
var allInde = [IndexPath]()
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at:indexPath) as! MyCollectionViewCell
cell.contentView.backgroundColor = UIColor.red
if !(allIndex.contains(indexPath)) {
allInde.append(indexPath)
}
}
//这里更新了代码