Memahami Identitas View
Kendalikan cara SwiftUI membandingkan dan menggunakan kembali view.
Memahami Identitas View adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Identitas Mengendalikan SwiftUI
SwiftUI melacak setiap tampilan berdasarkan identitas-nya untuk menentukan apakah akan memperbarui tampilan yang sudah ada atau membuat tampilan baru.
Mendapatkan identitas yang tepat merupakan faktor terpenting untuk ketepatan dan performa.
Dua Jenis Identitas
SwiftUI menggunakan dua bentuk: identitas struktural (posisi tampilan dalam pohon tampilan) dan identitas eksplisit (id yang Anda tetapkan).
Identitas Struktural
Secara bawaan, identitas tampilan berasal dari posisinya dalam hierarki. Cabang if di bawah ini membuat dua tampilan yang berbeda secara struktural.
var body: some View {
if isOn {
Text("On") // one identity
} else {
Text("Off") // a different identity
}
}Mengapa Cabang Kehilangan Status
Karena setiap cabang memiliki identitas struktural yang berbeda, perpindahan di antara keduanya menghancurkan tampilan pertama dan membuat tampilan kedua. Semua @State di dalamnya diatur ulang.
if isExpanded {
DetailView() // new instance each time the branch flips
} else {
SummaryView()
}Identitas Eksplisit dengan id()
Modifier .id(_:) menetapkan identitas eksplisit. Mengubah id memberi tahu SwiftUI, "ini adalah tampilan yang berbeda", sehingga memaksa pembuatan instans baru dan pengaturan ulang status.
CounterView()
.id(selectedTab) // new identity per tabIdentitas dalam ForEach
ForEach memerlukan identitas yang stabil untuk setiap elemen. Gunakan jalur kunci menuju id yang stabil, jangan pernah menggunakan indeks larik untuk koleksi yang dapat berubah.
ForEach(items, id: \.id) { item in
RowView(item: item)
}Jebakan Identitas Indeks
Menggunakan id: \.self pada indeks atau nilai yang berubah akan mengatur ulang identitas ketika data berubah, sehingga menyebabkan animasi yang keliru dan status yang hilang.
// Risky if items reorder or values repeat:
// ForEach(0..<items.count, id: \.self) { ... }Identitas dan Animasi
Animasi melakukan interpolasi antara status dari identitas yang sama. Jika identitas berubah, SwiftUI melakukan transisi penyisipan/penghapusan, bukan animasi yang mulus.
withAnimation {
// same identity -> property animates
// changed id -> transition (fade/slide)
}Modifier Kondisional Mengubah Identitas
Menerapkan modifier di dalam if dapat mengubah identitas struktural dan mengatur ulang status. Sebaiknya gunakan satu tampilan dengan nilai modifier yang dihitung secara kondisional.
// Better: keep one identity
Text("Hi")
.opacity(isHidden ? 0 : 1)
// Worse: branching creates two identitiesAnyView Menghapus Informasi Identitas
Membungkus tampilan dalam AnyView menyembunyikan tipenya dari SwiftUI, sehingga kemampuan SwiftUI untuk membandingkan perubahan secara efisien berkurang. Jika memungkinkan, gunakan tipe konkret atau @ViewBuilder.
// Prefer @ViewBuilder over returning AnyView
@ViewBuilder
func content() -> some View {
if flag { A() } else { B() }
}Identitas Stabil = Status Stabil
Aturan praktisnya: pertahankan identitas tetap stabil jika Anda ingin status dan animasi yang mulus tetap terjaga; ubah identitas dengan sengaja ketika Anda benar-benar menginginkan awal yang baru.
Pemeriksaan Singkat: Identitas Tampilan
Uji pemahaman Anda tentang identitas tampilan.
Ringkasan: Memahami Identitas Tampilan
SwiftUI mengidentifikasi tampilan secara struktural (posisi dalam pohon) dan eksplisit (.id). Identitas yang stabil mempertahankan @State dan memungkinkan animasi properti yang mulus; perubahan identitas mengatur ulang status dan memicu transisi.
Berikan id yang stabil kepada ForEach, hindari identitas indeks untuk data yang dapat berubah, minimalkan percabangan yang mengubah identitas, dan hindari AnyView jika tipe konkret dapat digunakan.
Belajar Swift dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Memahami Identitas View” gratis?
Ya — teks lengkap “Memahami Identitas View” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Memahami Identitas View”?
Kendalikan cara SwiftUI membandingkan dan menggunakan kembali view. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Memahami Identitas View” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memahami Identitas View
- Meminimalkan Evaluasi Ulang Body
- View Equatable dan Cakupan @State
- Membuat Profil dengan Instrumen SwiftUI