First imageSecond Image我试图创建一个集合视图,当选中时,它的背景是青色的。但是当我选择第一个时,它的其他地方变成了蓝色。例如,当我选择第一个单元格时,第一个单元格变成了青色,但是即使我没有选择其他索引,每3个索引中就有一个单元格变成了蓝色,它是这样的,我怎么解决这个问题呢?
var lastIndex: IndexPath = [1, 0]
enter image description here
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as? LocationViewCell
cell?.backView.backgroundColor = UIColor.cyan
print(indexPath)
if self.lastIndex != indexPath{
cell?.backView.backgroundColor = .cyan
}
let cell2 = collectionView.cellForItem(at: self.lastIndex) as? LocationViewCell
cell2?.backView.backgroundColor = .white
self.lastIndex = indexPath
}
2条答案
按热度按时间9jyewag01#
你可以使用“didSelectItemAt”方法来控制选中的单元格,并使用“didDeselectItemAt”方法来控制其余的单元格。我在这里给出了一个演示代码,可能会对你有所帮助。
mwkjh3gx2#
这是因为
dequeueReusableCell
总是重复使用单元格。我的意思是,当你滚动到右侧时,它会使用已经滚动过的左侧单元格。因此,它会显示留下的绿色单元格。所以要解决这个问题,你必须去你的
LocationViewCell
和这段代码,