我试图改变单元格的背景色时,它被选中。但单元格的背景色没有改变。
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CategoryCollectionViewCell
let category = self.categories[indexPath.row]
switch cell.isSelected {
case true:
cell.backgroundColor = .black
default:
cell.backgroundColor = .white
}
cell.setNeedsDisplay()
}
7条答案
按热度按时间nzrxty8p1#
你不需要在选择时手动改变背景色,UICollectionViewCell有一个名为
selectedBackgroundView
的属性就是为了这个目的。在
collectionView(_:cellForItemAt:)
委托方法中使用它,如下所示:vx6bjr1n2#
在didSelect委托方法中尝试以下操作:
g6baxovj3#
nukf8bse4#
应使用以下两个集合视图委托方法:
还有
vql8enpb5#
brccelvz6#
我认为处理一个单元格的背景颜色应该是一个单元格的一部分,通过观察它的属性
isSelected
。它处理选择和取消选择一个单元格,否则它将是棘手的取消选择一个选定的单元格在选择任何其他单元格,例如:alen0pnh7#
你可以在自定义单元格级别上指定选定的和正常的背景视图。这是苹果实际上推荐的,这里是他们自己的样本和苹果文档的链接:
https://developer.apple.com/documentation/uikit/uicollectionviewdelegate/changing_the_appearance_of_selected_and_highlighted_cells