选择一个单元格时取消选择并更改集合视图中其他单元格的背景
Deselect and change background of other cells in collection view when one cell is selected
我有一个 collectionView,我想在其中一次 select 一个单元格。并更改 selected 单元格的背景。我有一个问题,当我 select didSelectItem() 方法中的一个单元格时,我以前的 selected 单元格背景没有改变。
func collectionView(_ collectionView: UICollectionView,didSelectItemAt indexPath: IndexPath) {
if let cell2 = self.segmentScrollView.cellForItem(at: selectedcellNo!) as? segmentCollectionViewCell {
//self.segmentScrollView.reloadItems(at: [selectedcellNo!])
cell2.segmentName.backgroundColor = .white
cell2.segmentName.textColor = UIColor.init(red: 141/255, green: 0/255, blue: 22/255, alpha: 1.0)
self.segmentScrollView.deselectItem(at: selectedcellNo!, animated: true)
}
let cell = self.segmentScrollView.cellForItem(at: indexPath) as? segmentCollectionViewCell
cell?.segmentName.backgroundColor = UIColor.init(red: 141/255, green: 0/255, blue: 22/255, alpha: 1.0)
cell?.segmentName.textColor = .white
let dateValue = self.segmentJSON[indexPath.row]["date"].stringValue
self.getShows(date: dateValue)
print("selectedcellNo-now: ",selectedcellNo!)
self.selectedcellNo! = indexPath
}
在您的自定义 UICollectionViewCell
中,覆盖 isSelected
属性 并根据 [=] 中的选定状态更改 backgroundColor
14=]观察者,即
class CollectionViewCell: UICollectionViewCell {
override var isSelected: Bool {
didSet {
self.backgroundColor = isSelected ? .red : .white
}
}
//rest of the code...
}
在这种情况下无需实施 didSelectItemAt
。
我有一个 collectionView,我想在其中一次 select 一个单元格。并更改 selected 单元格的背景。我有一个问题,当我 select didSelectItem() 方法中的一个单元格时,我以前的 selected 单元格背景没有改变。
func collectionView(_ collectionView: UICollectionView,didSelectItemAt indexPath: IndexPath) {
if let cell2 = self.segmentScrollView.cellForItem(at: selectedcellNo!) as? segmentCollectionViewCell {
//self.segmentScrollView.reloadItems(at: [selectedcellNo!])
cell2.segmentName.backgroundColor = .white
cell2.segmentName.textColor = UIColor.init(red: 141/255, green: 0/255, blue: 22/255, alpha: 1.0)
self.segmentScrollView.deselectItem(at: selectedcellNo!, animated: true)
}
let cell = self.segmentScrollView.cellForItem(at: indexPath) as? segmentCollectionViewCell
cell?.segmentName.backgroundColor = UIColor.init(red: 141/255, green: 0/255, blue: 22/255, alpha: 1.0)
cell?.segmentName.textColor = .white
let dateValue = self.segmentJSON[indexPath.row]["date"].stringValue
self.getShows(date: dateValue)
print("selectedcellNo-now: ",selectedcellNo!)
self.selectedcellNo! = indexPath
}
在您的自定义 UICollectionViewCell
中,覆盖 isSelected
属性 并根据 [=] 中的选定状态更改 backgroundColor
14=]观察者,即
class CollectionViewCell: UICollectionViewCell {
override var isSelected: Bool {
didSet {
self.backgroundColor = isSelected ? .red : .white
}
}
//rest of the code...
}
在这种情况下无需实施 didSelectItemAt
。