Menu
Coddy logo textTech

Umgebungsobjekte

Teil des Abschnitts Einführung in SwiftUI der Swift-Journey von Coddy. Lektion 41 von 50.

Ein Objekt durch jede Ansicht bis zu der Ansicht weiterzugeben, die es benötigt, wird mühsam. Lege es stattdessen in die Umgebung, und jede darunterliegende Ansicht kann es lesen:

@StateObject private var cart = Cart()

var body: some View {
    NavigationStack {
        ShopView()
    }
    .environmentObject(cart)
}

Eine weiter unten liegende Ansicht deklariert mit @EnvironmentObject, was sie benötigt, ohne einen Anfangswert:

struct CartBadge: View {
    @EnvironmentObject var cart: Cart

    var body: some View {
        Text("\(cart.count) in cart")
    }
}

ShopView erwähnt den Warenkorb nie, aber CartBadge darin erhält trotzdem dasselbe Objekt. Wenn keine darüberliegende Ansicht es mit .environmentObject bereitstellt, wird die App mit einem Fehler beendet, sobald CartBadge angezeigt wird.

challenge icon

Aufgabe

Mittel

CartBadge soll die Anzahl des gemeinsamen Warenkorbs anzeigen. Übergebe cart mit .environmentObject an den VStack und ändere CartBadge so, dass es den Wert mit @EnvironmentObject liest. Das Badge muss nach einmaligem Tippen 1 in cart anzeigen.

Probier es selbst

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Einführung in SwiftUI

Übe selbstständig: Swift-Playground