我有一个 UITableView ,当用户点击一个单元格时,它会变为灰色以表示它已完成。但是当单元格滚动到视图外时,当它返回到视图时,它已恢复为其默认背景颜色,从而消除了用户交互。
有没有办法在滚动时保持单元格的背景颜色?
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as? TodaysRoutineTableViewCell else {
fatalError("Unexpected Index Path")
}
cell.backgroundColor = UIColor.customBackgroundGraphite()
cell.textLabel?.textColor = UIColor.white
configure(cell, at: indexPath)
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let cell = tableView.cellForRow(at: indexPath) {
if cell.backgroundColor == UIColor.customExerciseDoneCellColor() {
cell.backgroundColor = UIColor.customBackgroundGraphite()
} else if cell.backgroundColor == UIColor.customBackgroundGraphite() {
cell.backgroundColor = UIColor.customExerciseDoneCellColor()
}
}
}
答案 0 :(得分:-2)
问题是当您选择单元格后滚动时,不保留所选颜色?
滚动时会调用行委托的单元格。因此,即使你在Did中设置了背景,当调用Cell for row时,选择委托它的更改。
为了解决这种情况,在tableview单元格中添加一个布尔值,当你选择单元格时,更改布尔状态。
在行的单元格中添加:
if cell.CheckBoolean == true{
cell.backgroundcolor = UI.color()
}else{
cell.backgroungcolor = UI.color()
}
在选择委托中: 更改该布尔值并重新加载表视图