Изменение цвета определенных элементов списка SwiftUI

#ios #xcode #list #swiftui

#iOS #xcode #Список #swiftui

Вопрос:

У меня есть список «игроков» в моем приложении, и я хочу, чтобы у некоторых из них был другой цвет фона в зависимости от их свойств.

Каждый объект Player имеет свойство .active, которое имеет значение true или false. В зависимости от этого значения я хочу, чтобы фон этой строки был светло-серым, а не белым, как у других. Как мне это сделать? Я надеялся, что это будет так просто, как:

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

Ответ №1:

Этого можно добиться с 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))
   }
}