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.
Aufgabe
MittelThemeToggle 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()
}
}
}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