当滚动出视图时,覆盖的 setSelected 和 setHighlighted 不保留选定的背景

Overridden setSelected and setHighlighted doesn't retain selected background when scrolls out of view

我的 setSelected 重用 UITableViewCell 看起来像这样(我的 setHighlighted 也是):

override func setSelected(_ selected: Bool, animated: Bool) {
  if selected {
    backgroundColor = .red
  } else {
    backgroundColor = .white
  }
}

只要单元格滚出然后返回到视图中,背景颜色就会变回默认的白色。好像单元格没有保持其选中状态。

问题是 setSelected 会被调用,如果单元格被选中,它会将其更改为正确的背景颜色,然后 setHighlighted 会被调用,因为我的单元格没有突出显示它会将我的单元格改回默认的白色。

我只是从我的 setHighlighted 实现中取出了内容,它解决了我的问题。