UITableViewCell 的背景设置在滚动时重置
Posted
技术标签:
【中文标题】UITableViewCell 的背景设置在滚动时重置【英文标题】:UITableViewCell's background settings are reset on scroll 【发布时间】:2016-10-16 12:01:04 【问题描述】:我的项目中有一个 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
如果我的 tableview 的单元格的索引不能被 2 整除,我希望它们是灰色的。
当tableview出现时,一切都完美了!但是当我上下滚动时,单元格的颜色开始变为灰色。
所以最后我所有的单元格都是灰色的。
这里有一些图片:
before
after
【问题讨论】:
【参考方案1】:尝试添加else
语句,因为单元格被重复使用。
else
cell.backgroundColor = UIColor.white
【讨论】:
非常感谢!)这太容易了!):D @AlexVihlayev 没问题,伙计。 :)【参考方案2】:问题是您从未将背景设置回白色。由于单元格被重复使用,因此在某些时候您将所有单元格设置为灰色。相反,您应该在每次重用单元格时检查行索引:
cell.backgroundColor = indexPath.row % 2 == 0 ? UIColor.white : UIColor.gray
【讨论】:
【参考方案3】:因为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 首先回答了这个问题,而且非常简单
【讨论】:
以上是关于UITableViewCell 的背景设置在滚动时重置的主要内容,如果未能解决你的问题,请参考以下文章
UITableViewCell 上的 PFImageView 断断续续的滚动