在滚动tableViewCells上保留UITableViewCell背景颜色

时间:2017-02-20 12:45:02

标签: ios swift uitableview

我有一个 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()
        }
    }
}

1 个答案:

答案 0 :(得分:-2)

问题是当您选择单元格后滚动时,不保留所选颜色?

滚动时会调用行委托的单元格。因此,即使你在Did中设置了背景,当调用Cell for row时,选择委托它的更改。

为了解决这种情况,在tableview单元格中添加一个布尔值,当你选择单元格时,更改布尔状态。

在行的单元格中添加:

if cell.CheckBoolean == true{
    cell.backgroundcolor = UI.color()
}else{
    cell.backgroungcolor = UI.color()
}

在选择委托中: 更改该布尔值并重新加载表视图