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ş NavigationLink
bir navigationBarItems
değiştiricinin içine yerleştirmekten kaynaklanıyor gibi görünüyor NavigationView
. Çökme raporu, ileri Child
ve 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 FB7423964
kimse 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.