首页 > 解决方案 > 更改特定列表元素 SwiftUI 的颜色

问题描述

我的应用程序中有一个“玩家”列表,我希望其中一些根据他们的属性具有不同的背景颜色。

每个 Player 对象都有一个 true 或 false 的 .active 属性。根据这个值,我希望该行的背景是浅灰色而不是其他的白色。我该怎么做?我希望它会像这样简单:

List(homeTeam.players) {player in
    HStack{
        Text("\(player.shirtNumber) - \(player.playerName)")
        Spacer()
        Text("\(player.timerText)")
    }
}

标签: iosxcodelistswiftui

解决方案


可以使用修饰符来实现listRowBackground(但您需要使用ForEach而不是List直接使用)。

List {
   ForEach(homeTeam.players) {player in
      HStack{
        Text("\(player.shirtNumber) - \(player.playerName)")
        Spacer()
        Text("\(player.timerText)")
      }
      .listRowBackground(player.active ? Color(UIColor.lightGray) : 
         Color(UIColor.systemBackground))
   }
}

推荐阅读