Menu
Coddy logo textTech

La propriété @Binding

Fait partie de la section Introduction à SwiftUI du Journey Swift de Coddy. Leçon 39 sur 50.

Lorsqu’un écran s’agrandit, vous le divisez en vues plus petites. Une vue enfant qui doit modifier l’état de son parent déclare un @Binding au lieu de posséder la valeur :

struct VolumeControl: View {
    @Binding var volume: Int

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

Le parent conserve le @State et lui transmet une liaison avec $ :

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

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

Il existe une valeur, détenue par ContentView. Le sélecteur dans l’enfant la modifie via la liaison, et le texte du parent suit. @State détient une valeur ; @Binding en emprunte une à un autre endroit.

challenge icon

Défi

Moyen

ThemeToggle doit modifier le darkMode du parent. Transforme sa propriété en @Binding, lie son Toggle à celle-ci et transmets $darkMode depuis ContentView. Le texte doit afficher Dark theme lorsque le bouton est activé.

Essayez vous-même

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Introduction à SwiftUI

Entraînez-vous par vous-même : Playground Swift