Menu
Coddy logo textTech

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.

challenge icon

Sfida

Medio

ThemeToggle 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()
        }
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Introduzione a SwiftUI

Esercitati da solo: Playground SwiftUI