我有一个uitableviewcontroller在我的项目。所以我做了一个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
}
我希望我的tableview的单元格是灰色的,如果他们的索引不能被2整除。
当tableview出现时,一切都是完美的!但是当我上下滚动时,单元格开始将它们的颜色变为灰色。
所以最后所有的单元格都是灰色的
以下是一些图片:
之前后尝试添加一个else
语句,因为单元格是重用的。
else {
cell.backgroundColor = UIColor.white
}
问题是你从来没有把背景设置回白色。由于单元格正在被重用,因此在某些时候将所有单元格设置为灰色。相反,您应该在每次单元格被重用时检查行索引:
cell.backgroundColor = indexPath.row % 2 == 0 ? UIColor.white : UIColor.gray
因为tableview重用了单元格
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首先回答了这个问题,而且很简单