持久收集视图单元格选择

时间:2018-05-08 17:54:41

标签: ios swift uicollectionview uicollectionviewcell

请耐心等待我,因为我是快速编程的新手。

我有一个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中的另一个单元格然后向后滚动时,选择就消失了。

任何建议都将受到赞赏。

1 个答案:

答案 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)
    }
}

//这里更新了代码

SPRAIN