La propiedad @Binding
Parte de la sección Introducción a SwiftUI del Journey de Swift de Coddy. Lección 39 de 50.
Cuando una pantalla crece, la divides en vistas más pequeñas. Una vista secundaria que debe cambiar el estado de su vista principal declara un @Binding en lugar de ser propietaria del valor:
struct VolumeControl: View {
@Binding var volume: Int
var body: some View {
Stepper("Volume: \(volume)", value: $volume, in: 0...10)
}
}El elemento principal conserva el @State y le pasa un enlace mediante $:
struct ContentView: View {
@State private var volume = 5
var body: some View {
VStack {
VolumeControl(volume: $volume)
Text(volume == 0 ? "Muted" : "Playing")
}
}
}Hay un valor, propiedad de ContentView. El control incremental del elemento secundario lo cambia mediante el enlace, y el texto del elemento principal lo sigue. @State posee un valor; @Binding toma uno prestado de otro lugar.
Desafío
IntermedioThemeToggle debe cambiar el darkMode del padre. Cambia su propiedad a un @Binding, vincula su Toggle a ella y pasa $darkMode desde ContentView. El texto debe mostrar Dark theme mientras el interruptor esté activado.
Pruébalo tú mismo
import SwiftUI
@main
struct CoddyApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Introducción a SwiftUI
2Mostrar contenido
Vistas de textoNúmeros en el textoFuentesColoresSF SymbolsRepaso: etiqueta de precioPractica por tu cuenta: Playground de Swift