Mam listę "graczy" w mojej aplikacji i chcę, aby niektórzy z nich mają inny kolor tła w zależności od ich właściwości.

Każdy obiekt gracza ma właściwość. Aktywna, która jest prawdziwa lub fałsz. W zależności od tej wartości chcę, aby tło tego wiersza była raczej jasnoszarą niż białą z innymi. Jak mógłbym to zrobić? Miałem nadzieję, że byłoby tak proste jak:

List(homeTeam.players) {player in
    HStack{
        Text("\(player.shirtNumber) - \(player.playerName)")
        Spacer()
        Text("\(player.timerText)")
    }
}
1
benpomeroy9 21 listopad 2020, 14:25

1 odpowiedź

Najlepsza odpowiedź

Możliwe jest osiągnięcie modyfikatora listRowBackground (ale musisz użyć ForEach bezpośrednio).

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))
   }
}
2
Asperi 21 listopad 2020, 11:33