Menu
Coddy logo textTech

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.

challenge icon

Wyzwanie

Średni

ThemeToggle 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()
        }
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do SwiftUI

Poćwicz samodzielnie: Edytor online SwiftUI