swift - 选择一个单元格时,取消选择并更改集合视图中其他单元格的背景
问题描述
我有一个collectionView,我想一次选择一个单元格。并更改所选单元格的背景。我有一个问题,当我在 didSelectItem() 方法中选择一个单元格时,我之前选择的单元格背景没有改变。
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
基于didSet
观察者中的选定状态,即
class CollectionViewCell: UICollectionViewCell {
override var isSelected: Bool {
didSet {
self.backgroundColor = isSelected ? .red : .white
}
}
//rest of the code...
}
didSelectItemAt
在这种情况下无需实施。
推荐阅读
- python - 如何使用 ALAudioDevice“订阅”方法调用“处理”函数
- c# - 如何从列表中删除项目
在使用多个线程枚举列表时? - python - 写入新文件时找不到文件
- react-native - Xcode 构建错误:PhaseScriptExecution Strip\ Frameworks /appName.build/Debug-iphonesimulator/PROD.build/Script-8CBD27422B744FC9C0407AA3.sh
- python - 访问我有权访问的 Amazon S3 上某些子文件夹(前缀)下的对象
- sql - 查询以获取 Schema/DB 中具有特定列 VALUE 的所有表
- javascript - 如何在 JavaScript 中编辑组合框的默认值
- css - 许多 CSS 变量对性能的影响
- google-cloud-platform - 使文件夹部分可访问
- npm - 无法使用 sudo 运行 npm 命令