UITableView 索引路径行为奇怪
UITableView Index Path Behavior Acting Strange
所以我有一个 table 视图,在 cellForRowAt
方法中有大约 150 行 我有以下代码
cell.monthLabel.text = String(indexPath.row)
if indexPath.row == 0{
cell.backgroundColor = .blue
}
问题是为什么索引路径 9、18、27 等的背景颜色为蓝色。
因为您没有显示 tableView(_:cellForRowAt:)
方法的所有代码,所以假设您正在使单元格出列(使用方法 dequeueReusableCell(withIdentifier:)
并且已经注册了 class 以供重用(如果您使用自定义 class).
通过这种方法,可以重用单元格的视图。这意味着如果您不重新设置 属性(例如背景颜色),它将只使用旧单元格中的那个。
要解决此问题,您可以轻松地在代码中包含一个 else 并将背景颜色设置为白色。
如果你子class UITableViewCell
class 你可以使用 prepareForReuse()
函数来清理,例如重置背景颜色。
单元格被重复使用,您必须将所有 UI 元素设置为定义的状态。
因此,如果您将第 0 行中的 backgroundColor
设置为蓝色
if indexPath.row == 0 {
cell.backgroundColor = .blue
}
在所有其他情况下,您必须(重新)将其设置为默认颜色
else {
cell.backgroundColor = .white
}
UITableView 不会对每个项目设置一次数据,它会根据 activity 的进行对所有可见项目一次又一次地设置数据。我不能给你这种行为的明确原因,但我可以给你解决方案。每当您在某些条件下为项目设置一些数据时,也请始终使用 "Else" 语句。因此,对于这个特定问题,您只需添加 "Else" 块和 "If" 条件,并在 "Else" 块中设置项目的白色背景。
所以我有一个 table 视图,在 cellForRowAt
方法中有大约 150 行 我有以下代码
cell.monthLabel.text = String(indexPath.row)
if indexPath.row == 0{
cell.backgroundColor = .blue
}
问题是为什么索引路径 9、18、27 等的背景颜色为蓝色。
因为您没有显示 tableView(_:cellForRowAt:)
方法的所有代码,所以假设您正在使单元格出列(使用方法 dequeueReusableCell(withIdentifier:)
并且已经注册了 class 以供重用(如果您使用自定义 class).
通过这种方法,可以重用单元格的视图。这意味着如果您不重新设置 属性(例如背景颜色),它将只使用旧单元格中的那个。
要解决此问题,您可以轻松地在代码中包含一个 else 并将背景颜色设置为白色。
如果你子class UITableViewCell
class 你可以使用 prepareForReuse()
函数来清理,例如重置背景颜色。
单元格被重复使用,您必须将所有 UI 元素设置为定义的状态。
因此,如果您将第 0 行中的 backgroundColor
设置为蓝色
if indexPath.row == 0 {
cell.backgroundColor = .blue
}
在所有其他情况下,您必须(重新)将其设置为默认颜色
else {
cell.backgroundColor = .white
}
UITableView 不会对每个项目设置一次数据,它会根据 activity 的进行对所有可见项目一次又一次地设置数据。我不能给你这种行为的明确原因,但我可以给你解决方案。每当您在某些条件下为项目设置一些数据时,也请始终使用 "Else" 语句。因此,对于这个特定问题,您只需添加 "Else" 块和 "If" 条件,并在 "Else" 块中设置项目的白色背景。