Właściwość @Binding
Część sekcji Wprowadzenie do SwiftUI ścieżki Swift w Coddy. Lekcja 39 z 50.
Gdy ekran się rozrasta, dzielisz go na mniejsze widoki. Widok podrzędny, który musi zmieniać stan swojego widoku nadrzędnego, deklaruje @Binding zamiast przechowywać wartość:
struct VolumeControl: View {
@Binding var volume: Int
var body: some View {
Stepper("Volume: \(volume)", value: $volume, in: 0...10)
}
}Widok nadrzędny przechowuje @State i przekazuje do niego powiązanie za pomocą $:
struct ContentView: View {
@State private var volume = 5
var body: some View {
VStack {
VolumeControl(volume: $volume)
Text(volume == 0 ? "Muted" : "Playing")
}
}
}Jest jedna wartość, której właścicielem jest ContentView. Stepper w widoku podrzędnym zmienia ją za pośrednictwem powiązania, a tekst w widoku nadrzędnym odzwierciedla tę zmianę. @State przechowuje wartość; @Binding pożycza ją skądś indziej.
Wyzwanie
ŚredniThemeToggle powinien przełączać darkMode rodzica. Zmień jego właściwość na @Binding, powiąż z nią Toggle i przekaż $darkMode z ContentView. Gdy przełącznik jest włączony, tekst musi brzmieć Dark theme.
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