Objets d’environnement
Fait partie de la section Introduction à SwiftUI du Journey Swift de Coddy. Leçon 41 sur 50.
Transmettre un objet à travers chaque vue jusqu’à celle qui en a besoin devient fastidieux. Placez-le plutôt dans l’environnement, et toute vue située en dessous peut le lire :
@StateObject private var cart = Cart()
var body: some View {
NavigationStack {
ShopView()
}
.environmentObject(cart)
}Une vue plus bas déclare ce dont elle a besoin avec @EnvironmentObject, sans valeur initiale :
struct CartBadge: View {
@EnvironmentObject var cart: Cart
var body: some View {
Text("\(cart.count) in cart")
}
}ShopView ne mentionne jamais le panier, mais CartBadge qu’il contient reçoit tout de même le même objet. Si aucune vue située plus haut ne lui fournit .environmentObject, l’application s’arrête avec une erreur lorsque CartBadge est affiché.
Défi
MoyenCartBadge doit afficher le nombre d’articles du panier partagé. Fournissez cart à la VStack avec .environmentObject, et modifiez CartBadge pour le lire avec @EnvironmentObject. Le badge doit afficher 1 in cart après un appui.
Essayez vous-même
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Introduction à SwiftUI
4Modificateurs
Marge intérieureArrière-plansOrdre des modificateursCadres et formesRécapitulatif - Créateur de badges2Afficher du contenu
Vues de texteNombres dans le textePolicesCouleursSymboles SFRécapitulatif - Étiquette de prix5État et boutons
BoutonsLa propriété @StateÉtat vrai ou fauxVues conditionnellesRécapitulatif - Compteur de score3Piles et mise en page
VStackHStackAlignement et espacementSpacer et ZStackRécapitulatif - Carte météo6Saisie utilisateur
Champ de texteInterrupteurSteppeur et curseurSélecteurRécapitulatif - Formulaire de commande9Partager des données
La propriété @BindingObjets observablesObjets d’environnementRécapitulatif - Compteur de pasEntraînez-vous par vous-même : Playground Swift