Minimal reproduzierbares Beispiel (Xcode 11.2 Beta, dies funktioniert in 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()
}
}
Das Problem scheint darin zu liegen, dass ich mich NavigationLink
in einem navigationBarItems
Modifikator befinde, der in einer SwiftUI-Ansicht verschachtelt ist, deren Stammansicht a ist NavigationView
. Der Absturzbericht zeigt an, dass ich versuche, zu einem Ansichts-Controller zu wechseln, der nicht vorhanden ist, wenn ich vorwärts zu Child
und dann zurück zu navigiere Parent
.
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
*** First throw call stack:
Wenn ich das stattdessen NavigationLink
wie unten im Hauptteil der Ansicht platzieren würde, funktioniert es einwandfrei.
struct Parent: View {
var body: some View {
NavigationView {
NavigationLink(destination: Child(), label: { Text("Next") })
}
}
}
Ist dies ein SwiftUI-Fehler oder ein erwartetes Verhalten?
BEARBEITEN: Ich habe ein Problem mit Apple in seinem Feedback-Assistenten mit der ID eröffnet, FB7423964
falls jemand von Apple da draußen abwägen möchte :).
BEARBEITEN: Mein offenes Ticket im Feedback-Assistenten zeigt an, dass mehr als 10 ähnliche Probleme gemeldet wurden. Sie haben die Auflösung mit aktualisiert Resolution: Potential fix identified - For a future OS update
. Daumen drücken, dass der Fix bald landet.
EDIT: Dies wurde in iOS 13.3 behoben!
ContentView.swift
. Ich werde den Beitrag bearbeiten, aber der Absturz tritt nur auf, wenn Sie vorwärts und dann zurück navigieren.