Study
SwiftUI

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.

Editor Latihan

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.