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