UITableViewCell 背景设置在滚动时重置

UITableViewCell's background settings are reset on scroll

我的项目中有一个 UITableView 控制器。所以我做了一个 UITableViewCell 设置,如下所示:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

    cell.textLabel?.text = "Section: \(indexPath.section). Row: \(indexPath.row)."

    if indexPath.row % 2 == 1 {
        cell.backgroundColor = UIColor.gray
    }

    return cell
}

如果表格视图的索引不能被 2 整除,我希望它们的单元格显示为灰色。

tableview一出现,一切就完美了!但是当我上下滚动时,单元格开始将颜色变为灰色。

所以最后我所有的单元格都是灰色的。

这是一些图片:

before

after

尝试添加 else 语句,因为单元格被重复使用。

else {
    cell.backgroundColor = UIColor.white
}

因为tableview重用了cell

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

cell.textLabel?.text = "Section: \(indexPath.section). Row: \(indexPath.row)."

if indexPath.row % 2 == 1 {
    cell.backgroundColor = UIColor.gray
}else{
    cell.backgroundColor = YOUR_COLOR
}
return cell

}

编辑:Gellert Lee 第一个回答,很简单

问题是您从未将背景设置回白色。由于单元格被重复使用,在某些时候您将所有单元格设置为灰色。相反,您应该在每次重复使用单元格时检查行索引:

cell.backgroundColor = indexPath.row % 2 == 0 ? UIColor.white : UIColor.gray