La proprietà @Binding
Fa parte della sezione Introduzione a SwiftUI del percorso Swift di Coddy. Lezione 39 di 50.
Quando una schermata si espande, la suddividi in viste più piccole. Una vista figlia che deve modificare lo stato della vista genitore dichiara un @Binding invece di possedere il valore:
struct VolumeControl: View {
@Binding var volume: Int
var body: some View {
Stepper("Volume: \(volume)", value: $volume, in: 0...10)
}
}Il componente genitore mantiene il @State e gli passa un binding con $:
struct ContentView: View {
@State private var volume = 5
var body: some View {
VStack {
VolumeControl(volume: $volume)
Text(volume == 0 ? "Muted" : "Playing")
}
}
}C'è un valore posseduto da ContentView. Lo stepper nella vista figlia lo modifica tramite il binding e il testo della vista genitore si aggiorna. @State possiede un valore; @Binding ne prende in prestito uno da qualche altra parte.
Sfida
MedioThemeToggle dovrebbe modificare darkMode del componente padre. Cambia la sua proprietà in @Binding, associa il suo Toggle a essa e passa $darkMode da ContentView. Il testo deve essere Dark theme quando l’interruttore è attivo.
Provalo tu
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Introduzione a SwiftUI
7Elenchi
Per ogni elementoElementi identificabiliElencoAggiungere elementiRiepilogo - Lista della spesa10Progetto - Coddy Coffee
Panoramica del progettoSchermate delle bevande2Mostrare contenuti
Viste di testoNumeri nel testoFontColoriSF SymbolsRiepilogo - Etichetta del prezzo5Stato e pulsanti
PulsantiLa proprietà @StateStato vero o falsoViste condizionaliRiepilogo - Segnapunti9Condivisione dei dati
La proprietà @BindingOggetti osservabiliOggetti dell’ambienteRiepilogo - Contatore di passiEsercitati da solo: Playground SwiftUI