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.
Défi
MoyenThemeToggle 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()
}
}
}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
4Modificateurs
Marge intérieureArrière-plansOrdre des modificateursCadres et formesRécapitulatif - Créateur de badges2Afficher du contenu
Vues de texteNombres dans le textePolicesCouleursSymboles SFRécapitulatif - Étiquette de prix5État et boutons
BoutonsLa propriété @StateÉtat vrai ou fauxVues conditionnellesRécapitulatif - Compteur de score3Piles et mise en page
VStackHStackAlignement et espacementSpacer et ZStackRécapitulatif - Carte météo6Saisie utilisateur
Champ de texteInterrupteurSteppeur et curseurSélecteurRécapitulatif - Formulaire de commande9Partager des données
La propriété @BindingObjets observablesObjets d’environnementRécapitulatif - Compteur de pasEntraînez-vous par vous-même : Playground Swift