Obiekty środowiskowe
Część sekcji Wprowadzenie do SwiftUI ścieżki Swift w Coddy. Lekcja 41 z 50.
Przekazywanie obiektu przez każdy widok aż do tego, który go potrzebuje, staje się uciążliwe. Zamiast tego umieść go w środowisku, a każdy podrzędny widok będzie mógł go odczytać:
@StateObject private var cart = Cart()
var body: some View {
NavigationStack {
ShopView()
}
.environmentObject(cart)
}Widok znajdujący się niżej deklaruje, czego potrzebuje, za pomocą @EnvironmentObject, bez wartości początkowej:
struct CartBadge: View {
@EnvironmentObject var cart: Cart
var body: some View {
Text("\(cart.count) in cart")
}
}ShopView nie wspomina o koszyku, ale znajdujący się w nim CartBadge nadal otrzymuje ten sam obiekt. Jeśli żaden widok nadrzędny nie dostarczy mu .environmentObject, aplikacja zatrzyma się z błędem, gdy zostanie wyświetlony CartBadge.
Wyzwanie
ŚredniCartBadge powinien wyświetlać liczbę elementów we współdzielonym koszyku. Przekaż cart do VStack za pomocą .environmentObject i zmień CartBadge, aby odczytywał go za pomocą @EnvironmentObject. Po jednym stuknięciu plakietka powinna wyświetlać 1 in cart.
Spróbuj swoich sił
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Wprowadzenie do SwiftUI
10Projekt – Kawiarnia Coddy
Przegląd projektuEkrany napojów2Wyświetlanie treści
Widoki tekstoweLiczby w tekścieCzcionkiKolorySF SymbolsPodsumowanie — metka z ceną5Stan i przyciski
PrzyciskiWłaściwość @StateStan prawda lub fałszWidoki warunkowePodsumowanie — licznik punktów6Dane wejściowe użytkownika
Pole tekstowePrzełącznikPrzyciski krokowe i suwakSelektorPodsumowanie – formularz zamówienia9Udostępnianie danych
Właściwość @BindingObiekty obserwowalneObiekty środowiskowePodsumowanie — licznik krokówPoćwicz samodzielnie: Edytor online SwiftUI