Swift CollectionView显示错误
Swift CollectionView Display Wrong
我的应用程序中有一个集合视图。
我想将每个项目设置为具有不同的颜色。
我用的是switch case,如下
switch indexPath.row {
case 0: cell.label.text = "0"
cell.label.textColor = .blue
case 1: cell.label.text = "1"
case 2: cell.label.text = "2"
case 3: cell.label.text = "3"
case 4: cell.label.text = "4"
case 5: cell.label.text = "5"
default: cell.label.text = "6"
}
我已经为标签设置了默认颜色浅灰色。
但是如果我将 case 0 设置为蓝色,case 0 和 5 将显示蓝色。
我将case 1设置为蓝色,case 1和4会显示蓝色。
发生这种情况是因为 UICollectionView
具有重用单元格实例的机制。因此,这就是为什么您应该在每种情况下都处理 cell.label.textColor
的原因。否则,每当调用 cellForItemAt indexPath
委托时,它将无法控制。请尝试:
switch indexPath.row {
case 0:
cell.label.text = "0"
cell.label.textColor = .blue
case 1:
cell.label.text = "1"
cell.label.textColor = .red
case 2:
cell.label.text = "2"
cell.label.textColor = .orange
case 3:
cell.label.text = "3"
cell.label.textColor = .purple
case 4:
cell.label.text = "4"
cell.label.textColor = .blue
case 5:
cell.label.text = "5"
cell.label.textColor = .blue
default:
cell.label.text = "6"
cell.label.textColor = .blue
}
如果你想先使用默认颜色,那么在开始 switch case 之前设置标签默认颜色。在 switch
情况下,您可以根据条件更新颜色。
像这样:
cell.label.textColor = .ligthGray
switch indexPath.row {
case 0: cell.label.text = "0"
cell.label.textColor = .blue
case 1: cell.label.text = "1"
case 2: cell.label.text = "2"
case 3: cell.label.text = "3"
case 4: cell.label.text = "4"
case 5: cell.label.text = "5"
default: cell.label.text = "6"
}
在这种情况下,只有 0
索引标签将为 blue
颜色,其他将为 lightGray
我的应用程序中有一个集合视图。 我想将每个项目设置为具有不同的颜色。 我用的是switch case,如下
switch indexPath.row {
case 0: cell.label.text = "0"
cell.label.textColor = .blue
case 1: cell.label.text = "1"
case 2: cell.label.text = "2"
case 3: cell.label.text = "3"
case 4: cell.label.text = "4"
case 5: cell.label.text = "5"
default: cell.label.text = "6"
}
我已经为标签设置了默认颜色浅灰色。 但是如果我将 case 0 设置为蓝色,case 0 和 5 将显示蓝色。 我将case 1设置为蓝色,case 1和4会显示蓝色。
发生这种情况是因为 UICollectionView
具有重用单元格实例的机制。因此,这就是为什么您应该在每种情况下都处理 cell.label.textColor
的原因。否则,每当调用 cellForItemAt indexPath
委托时,它将无法控制。请尝试:
switch indexPath.row {
case 0:
cell.label.text = "0"
cell.label.textColor = .blue
case 1:
cell.label.text = "1"
cell.label.textColor = .red
case 2:
cell.label.text = "2"
cell.label.textColor = .orange
case 3:
cell.label.text = "3"
cell.label.textColor = .purple
case 4:
cell.label.text = "4"
cell.label.textColor = .blue
case 5:
cell.label.text = "5"
cell.label.textColor = .blue
default:
cell.label.text = "6"
cell.label.textColor = .blue
}
如果你想先使用默认颜色,那么在开始 switch case 之前设置标签默认颜色。在 switch
情况下,您可以根据条件更新颜色。
像这样:
cell.label.textColor = .ligthGray
switch indexPath.row {
case 0: cell.label.text = "0"
cell.label.textColor = .blue
case 1: cell.label.text = "1"
case 2: cell.label.text = "2"
case 3: cell.label.text = "3"
case 4: cell.label.text = "4"
case 5: cell.label.text = "5"
default: cell.label.text = "6"
}
在这种情况下,只有 0
索引标签将为 blue
颜色,其他将为 lightGray