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
我的项目中有一个 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