选择/取消选择在UICollectionView中不起作用

时间:2020-05-28 12:35:54

标签: ios swift uicollectionview

因此,我的UICollectionView中有一个单元格,它具有两个分别名为selectdeselect的函数,但它们没有更改{{1 }}。 这是UILabel

Cell

这就是我调用这些函数的方式。

Cell

2 个答案:

答案 0 :(得分:0)

一个可能的原因是,如果在cellForItem中看不到该单元格,则didSelect中的UICollectionView将返回nil。例如:如果要取消选择的单元格不在屏幕上,则该方法将不起作用,因为此时该单元格不在UICollectionView内部。

要确保它保持取消选中状态,您还必须在cellForRow内设置要取消选择的单元格。

对我来说似乎很奇怪的另一点是,为什么要在每次状态更改时创建一个 new UILabel?您只需要根据状态修改一个UILabel的属性即可。

我建议在prepareForReuse中将所有单元格状态保持为取消选中状态,然后在cellForRow中将其选中。除了当然要在didSelect中这样做。

答案 1 :(得分:0)

您可以使用didSelectdidDeSelect委托方法轻松地对其进行管理。因此,当您点击一个单元格时,它将调用didSelect方法,并且您可以更改标签文本。另外,当您点击该单元格时,如果已经选择了任何单元格,则didDeselect方法将自动被调用。

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let cell = collectionView.cellForItem(at: indexPath) as! YourCell
      cell.label.text = "Selected"
}

func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
    let cell = collectionView.cellForItem(at: indexPath) as! YourCell
    cell.label.text = "Select"
}
相关问题