所以我在cellForRowAt
方法中有一个包含约150行的表视图,我有以下代码
cell.monthLabel.text = String(indexPath.row)
if indexPath.row == 0{
cell.backgroundColor = .blue
}
问题是为什么索引路径9,18,27等具有蓝色的背景颜色。
答案 0 :(得分:2)
重复使用单元格,您必须将所有UI元素设置为已定义的状态。
因此,如果您在第0行将-jars spark-sql-kafka-0-10_2.11-2.1.1.jar
设置为蓝色
backgroundColor
你必须(重新)在所有其他情况下将其设置为默认颜色
if indexPath.row == 0 {
cell.backgroundColor = .blue
}
答案 1 :(得分:1)
由于您没有显示tableView(_:cellForRowAt:)
方法的所有代码,只是假设您正在使用方法dequeueReusableCell(withIdentifier:)
将单元格出列并已注册您的类以供重用(如果您使用自定义类)。
通过这种方法,可以重复使用单元格视图。这意味着如果你不重新设置属性(例如背景颜色),它将只使用旧单元格中的那个属性。
要解决此问题,您可以在代码中轻松添加其他内容,然后将背景颜色设置为白色。
如果您继承UITableViewCell
课程,则可以使用prepareForReuse()
功能进行清理,例如重置背景颜色。
答案 2 :(得分:0)
UITableView不会在每个项目上设置一次数据,它会根据正在进行的活动,一次又一次地在所有可见项目上设置数据。我不能告诉你这种行为的明确原因,但我可以给你解决方案。每当您在具有某些条件的项目上设置某些数据时,请始终使用“Else”语句。因此,对于此特定问题,您只需要在“If”条件下添加“Else”块,并在“Else”块中设置项目的白色背景。