Menu
Coddy logo textTech

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é.

challenge icon

Défi

Moyen

CartBadge 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()
        }
    }
}
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Swift