Ios UITableView索引路径行为异常

Ios UITableView索引路径行为异常,ios,uitableview,swift3,tableview,indexpath,Ios,Uitableview,Swift3,Tableview,Indexpath,因此,我有一个表视图,在cellForRowAt方法中有大约150行,我有以下代码 cell.monthLabel.text = String(indexPath.row) if indexPath.row == 0{ cell.backgroundColor = .blue } 问题是为什么索引路径9、18、27等处的背景色为蓝色 由于您没有显示tableView(uuxCELLFORROWAT:)方法的所有代码,因此只需假设您是出列单元(使用方法出列可重用单元(使用标识符

因此,我有一个表视图,在
cellForRowAt
方法中有大约150行,我有以下代码

cell.monthLabel.text = String(indexPath.row)
    
if indexPath.row == 0{
    cell.backgroundColor = .blue
}
问题是为什么索引路径9、18、27等处的背景色为蓝色


由于您没有显示
tableView(uuxCELLFORROWAT:)
方法的所有代码,因此只需假设您是出列单元(使用方法
出列可重用单元(使用标识符:)
,并且已注册了要重用的类(如果您使用自定义类)

通过这种方法,单元格的视图得到重用。这意味着,如果不重新设置属性(例如背景色),它将只使用旧单元格中的属性

要解决这个问题,您可以在代码中轻松地包含一个else,并在其中将背景色设置为白色


如果您将
UITableViewCell
类划分为子类,则可以使用
prepareforeuse()
函数来清理和重置背景色。

如果重复使用单元格,则必须将所有UI元素设置为已定义状态

因此,如果您在第0行中将
背景色设置为蓝色

if indexPath.row == 0 {
    cell.backgroundColor = .blue
}
在所有其他情况下,必须(重新)将其设置为默认颜色

else {
    cell.backgroundColor = .white
}

UITableView不会在每个项目上设置一次数据,它会根据正在进行的活动不断在所有可见项目上设置一次又一次的数据。我无法为您提供此行为的明确原因,但我可以为您提供解决方案。每当您在具有某些条件的项目上设置某些数据时,请始终使用“其他”因此,对于这个特殊问题,您只需添加带有“If”条件的“Else”块,并在“Else”中设置项的白色背景block.

很好的解释谢谢你解决了我的问题,但是出于好奇,你会知道为什么每9个单元格都是蓝色的吗?当用户滚动时,屏幕上有7个单元格,加上2个准备好的单元格,一个在顶部,一个在底部。