Menu
CoddyTech

property @Binding

Termasuk bagian Pengenalan SwiftUI dalam perjalanan Swift di Coddy. Pelajaran 39 dari 50.

Saat layar bertambah besar, kamu membaginya menjadi view yang lebih kecil. View anak yang harus mengubah state induknya mendeklarasikan @Binding, bukan memiliki nilainya sendiri:

struct VolumeControl: View {
    @Binding var volume: Int

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

Parent menyimpan @State dan meneruskan binding ke sana dengan $:

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

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

Ada satu nilai yang dimiliki oleh ContentView. Stepper di dalam child mengubahnya melalui binding, dan teks pada parent mengikuti perubahan itu. @State memiliki sebuah nilai; @Binding meminjam nilai dari tempat lain.

challenge icon

Tantangan

Sedang

ThemeToggle seharusnya mengubah darkMode milik induknya. Ubah property-nya menjadi @Binding, hubungkan Toggle ke property tersebut, lalu teruskan $darkMode dari ContentView. Teks harus berbunyi Dark theme saat toggle aktif.

Coba sendiri

import SwiftUI

@main
struct CoddyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pengenalan SwiftUI

Latihan sendiri: Playground SwiftUI