因此,我的UICollectionView
中有一个单元格,它具有两个分别名为select
和deselect
的函数,但它们没有更改{{1 }}。
这是UILabel
Cell
这就是我调用这些函数的方式。
Cell
答案 0 :(得分:0)
一个可能的原因是,如果在cellForItem
中看不到该单元格,则didSelect
中的UICollectionView
将返回nil。例如:如果要取消选择的单元格不在屏幕上,则该方法将不起作用,因为此时该单元格不在UICollectionView
内部。
要确保它保持取消选中状态,您还必须在cellForRow
内设置要取消选择的单元格。
对我来说似乎很奇怪的另一点是,为什么要在每次状态更改时创建一个 new UILabel
?您只需要根据状态修改一个UILabel
的属性即可。
我建议在prepareForReuse
中将所有单元格状态保持为取消选中状态,然后在cellForRow
中将其选中。除了当然要在didSelect
中这样做。
答案 1 :(得分:0)
您可以使用didSelect
和didDeSelect
委托方法轻松地对其进行管理。因此,当您点击一个单元格时,它将调用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"
}