Contoh minimal yang dapat direproduksi (Xcode 11.2 beta, ini berfungsi di Xcode 11.1):
struct Parent: View {
var body: some View {
NavigationView {
Text("Hello World")
.navigationBarItems(
trailing: NavigationLink(destination: Child(), label: { Text("Next") })
)
}
}
}
struct Child: View {
@Environment(\.presentationMode) var presentation
var body: some View {
Text("Hello, World!")
.navigationBarItems(
leading: Button(
action: {
self.presentation.wrappedValue.dismiss()
},
label: { Text("Back") }
)
)
}
}
struct ContentView: View {
var body: some View {
Parent()
}
}
Masalahnya tampaknya terletak pada menempatkan NavigationLink
bagian dalam saya dari navigationBarItems
pengubah yang bersarang di dalam tampilan SwiftUI yang tampilan root-nya adalah a NavigationView
. Laporan kerusakan menunjukkan bahwa saya mencoba untuk pop ke controller tampilan yang tidak ada ketika saya menavigasi ke depan Child
dan kemudian kembali ke Parent
.
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
*** First throw call stack:
Jika saya sebaliknya menempatkan itu NavigationLink
di tubuh tampilan seperti di bawah ini, itu berfungsi dengan baik.
struct Parent: View {
var body: some View {
NavigationView {
NavigationLink(destination: Child(), label: { Text("Next") })
}
}
}
Apakah ini bug SwiftUI atau perilaku yang diharapkan?
EDIT: Saya telah membuka masalah dengan Apple dalam asisten umpan balik mereka dengan ID FB7423964
jika ada orang di luar sana dari Apple yang peduli untuk menimbang :).
EDIT: Tiket terbuka saya di asisten umpan balik menunjukkan ada 10+ masalah yang dilaporkan serupa. Mereka telah memperbarui resolusi dengan Resolution: Potential fix identified - For a future OS update
. Jari-jari bahwa perbaikan tanah segera.
EDIT: Ini telah diperbaiki di iOS 13.3!
ContentView.swift
. Saya akan mengedit posting, tetapi crash hanya terjadi ketika Anda menavigasi ke depan dan kemudian kembali.