Menu
Coddy logo textTech

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.

challenge icon

Desafío

Intermedio

ThemeToggle 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()
        }
    }
}
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Swift