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.
Tantangan
SedangThemeToggle 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()
}
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pengenalan SwiftUI
9Berbagi Data
property @Bindingobject yang Dapat Diamatiobject EnvironmentRingkasan: Penghitung LangkahLatihan sendiri: Playground SwiftUI