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.
Aufgabe
MittelCartBadge 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()
}
}
}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
4Modifikatoren
InnenabstandHintergründeReihenfolge der ModifikatorenRahmen und FormenRückblick – Badge Maker10Projekt – Coddy Coffee
ProjektübersichtGetränkeansichtenÜbe selbstständig: Swift-Playground