Je sais que SwiftUI ne prend pas en charge actuellement les boucles régulières mais fournit plutôt quelque chose appelé ForEach mais quelle est la différence entre cela et une liste?
ForEach
est une vue qui vous permet de transmettre une collection de données à son initialiseur puis de créer plusieurs "sous-vues" à partir de la fermeture que vous fournissez. Il n'a aucune sémantique sur la façon dont les vues seront organisées.
ForEach(1...5) { row in
Text("Row \(row)")
}
va créer l'équivalent hors
Text("Row 1")
Text("Row 2")
Text("Row 3")
Text("Row 4")
Text("Row 5")
enveloppé dans une seule vue de conteneur.
List
est une vue qui peut composer plusieurs vues ensemble, mais pas nécessairement des vues du même type. Vous pouvez simplement ajouter plusieurs vues sans boucle.
List {
Image("avatar")
Text("Title")
Button(action: {
print("Button tapped!")
}) {
Text("Energize!")
}
}
En tant que commodité, l'initialiseur List
vous permet de l'utiliser comme la vue ForEach
au cas où vous voudriez avoir une liste composée d'un seul type de cellule.
List(1...5) { row in
Text("Row \(row)")
}
Une liste a une apparence spéciale, selon la plateforme. Par exemple, sur iOS, une liste apparaîtra sous forme de tableau et insérera des lignes de séparation entre ses vues empilées verticalement.
Vous pouvez utiliser les vues ForEach
dans les vues List
pour avoir du contenu dynamique et statique - une fonctionnalité très puissante de SwiftUI.
List {
Text("Food")
ForEach(meals) { meal in
Text(meal.name)
}
Text("Drinks")
ForEach(drinks) { drink in
Text(drink.name)
}
}