Menu
Coddy logo textTech

Die @Binding-Eigenschaft

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

Wenn ein Bildschirm wächst, teilst du ihn in kleinere Ansichten auf. Eine untergeordnete Ansicht, die den Zustand ihrer übergeordneten Ansicht ändern muss, deklariert @Binding, anstatt den Wert selbst zu besitzen:

struct VolumeControl: View {
    @Binding var volume: Int

    var body: some View {
        Stepper("Volume: \(volume)", value: $volume, in: 0...10)
    }
}

Die übergeordnete Ansicht behält den @State bei und übergibt eine Bindung daran mit $:

struct ContentView: View {
    @State private var volume = 5

    var body: some View {
        VStack {
            VolumeControl(volume: $volume)
            Text(volume == 0 ? "Muted" : "Playing")
        }
    }
}

Es gibt einen Wert, der ContentView gehört. Der Stepper im untergeordneten Element ändert ihn über die Bindung, und der Text des übergeordneten Elements folgt. @State besitzt einen Wert; @Binding leiht sich einen von anderer Stelle.

challenge icon

Aufgabe

Mittel

ThemeToggle sollte den darkMode des übergeordneten Elements umschalten. Ändere seine Eigenschaft in ein @Binding, binde seinen Toggle daran und übergebe $darkMode von ContentView. Der Text muss Dark theme lauten, während der Umschalter aktiviert ist.

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