Binding Dua Arah dengan \$
Penjelasan
Beberapa komponen SwiftUI seperti TextField, Toggle, dan Slider tidak hanya menampilkan nilai — mereka juga perlu MENGUBAH nilai itu langsung saat pengguna berinteraksi. Untuk ini, komponen tersebut tidak menerima nilai biasa, melainkan Binding<T>, yaitu referensi baca-tulis ke sebuah sumber data. Setiap property yang dibungkus @State otomatis punya projected value yang diakses dengan awalan tanda dolar di depan nama variabelnya ($namaVariabel). Projected value inilah yang bertipe Binding<T> dan bisa diteruskan ke komponen seperti TextField. Perhatikan bedanya: judul (tanpa $) memberi NILAI saat ini (String), sedangkan $judul memberi BINDING (jalur baca-tulis) ke variabel itu.
Contoh Konsep
import SwiftUI
struct FormBindingView: View {
@State private var nama = ""
@State private var aktif = false
var body: some View {
VStack(spacing: 16) {
TextField("Masukkan nama", text: $nama)
.textFieldStyle(.roundedBorder)
Toggle("Aktifkan notifikasi", isOn: $aktif)
Text("Halo, \(nama.isEmpty ? "..." : nama)")
}
.padding()
}
}
Praktikum
Buat @State private var kota = "", tambahkan TextField("Kota asal", text: ...) yang terikat ke kota, lalu tampilkan Text yang menunjukkan isi kota terkini.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Lupa menulis tanda $ di depan nama variabel saat mengisi parameter text:/isOn: adalah kesalahan paling umum pemula — kompiler akan menolak karena TextField butuh Binding<String>, bukan String biasa.