En az tekrarlanabilir örnek (Xcode 11.2 beta, bu Xcode 11.1'de çalışır):
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()
}
}
Sorun , kök görünümü bir SwiftUI görünümünün içine yerleştirilmiş NavigationLinkbir navigationBarItemsdeğiştiricinin içine yerleştirmekten kaynaklanıyor gibi görünüyor NavigationView. Çökme raporu, ileri Childve sonra geri gittiğimde var olmayan bir görünüm denetleyicisine geçmeye çalıştığımı gösteriyor Parent.
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
*** First throw call stack:
Bunun yerine NavigationLink, aşağıdaki gibi görünümün gövdesine yerleştirirsem, gayet iyi çalışıyor.
struct Parent: View {
var body: some View {
NavigationView {
NavigationLink(destination: Child(), label: { Text("Next") })
}
}
}
Bu bir SwiftUI hatası mı yoksa beklenen bir davranış mı?
EDIT: Apple ile FB7423964kimse tartmak umurunda olması durumunda kimliği ile geri bildirim asistanı Apple ile bir sorun açtım :).
EDIT: Geri bildirim asistanındaki açık biletim, bildirilen 10'dan fazla benzer sorun olduğunu gösteriyor. Çözünürlüğü ile güncellediler Resolution: Potential fix identified - For a future OS update. Parmaklar, düzeltmenin yakında ineceğini söyledi.
EDIT: Bu iOS 13.3'te düzeltildi!
ContentView.swift. Gönderi üzerinde bir düzenleme yapacağım, ancak kilitlenme yalnızca ileri ve geri gittiğinizde gerçekleşir.