View Kondisional (if/else)
Penjelasan
Body sebuah View sebenarnya ditulis dalam konteks khusus bernama @ViewBuilder, yang membolehkan kamu menulis statement if/else, if let, atau switch LANGSUNG di dalamnya seolah-olah itu ekspresi biasa — sesuatu yang tidak bisa dilakukan closure Swift pada umumnya. Ini memungkinkan tampilan berubah bentuk sepenuhnya berdasarkan kondisi, misalnya menampilkan indikator loading vs konten asli. Perlu diingat: setiap cabang if/else HARUS mengembalikan View (bisa View yang berbeda tipe konkretnya, ViewBuilder yang menangani itu di balik layar lewat tipe gabungan). Untuk kasus 'tampilkan atau sembunyikan tanpa alternatif', kamu bisa pakai if kondisi { ... } tanpa else — kalau kondisi false, tidak ada View yang dirender sama sekali di posisi itu.
Contoh Konsep
import SwiftUI
struct StatusView: View {
@State private var sedangMemuat = true
var body: some View {
VStack {
if sedangMemuat {
ProgressView("Memuat...")
} else {
Text("Data siap ditampilkan")
}
Button("Toggle") {
sedangMemuat.toggle()
}
}
}
}
Praktikum
Buat @State private var sudahLogin = false. Tampilkan Text("Selamat datang kembali") kalau sudahLogin true, atau Text("Silakan login") kalau false, memakai if/else langsung di body.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Menukar cabang if/else berulang kali bisa memicu SwiftUI menghancurkan dan membuat ulang View sepenuhnya (kehilangan @State internal View tersebut) karena tipe View di kedua cabang dianggap berbeda identitas. Kalau ingin transisi mulus, gunakan .transition() dan withAnimation, dibahas di topik Animasi.