我的项目中有一个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的单元格是灰色的。
当tableview出现时,一切都很完美!但是当我上下滚动时,细胞开始将颜色变为灰色。
所以最后我的所有细胞都是灰色的。
以下是一些图片:
答案 0 :(得分:3)
尝试添加else
语句,因为这些单元格会被重复使用。
else {
cell.backgroundColor = UIColor.white
}
答案 1 :(得分:2)
问题是你从未将背景设置为白色。由于单元格正在被重用,所以在某些时候你为所有单元格设置了灰色。相反,每次重复使用单元格时都应检查行索引:
cell.backgroundColor = indexPath.row % 2 == 0 ? UIColor.white : UIColor.gray
答案 2 :(得分:0)
因为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
}
编辑:盖勒特·李首先回答并非常简单