最小的可重现示例(Xcode 11.2 beta,在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()
}
}
问题似乎在于将我放置NavigationLink
在navigationBarItems
嵌套于SwiftUI视图(其根视图为)的修改器内部NavigationView
。崩溃报告表明,当我向前导航Child
然后返回时,我试图弹出一个不存在的视图控制器Parent
。
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Tried to pop to a view controller that doesn't exist.'
*** First throw call stack:
如果我将其放置NavigationLink
在如下所示的视图主体中,则效果很好。
struct Parent: View {
var body: some View {
NavigationView {
NavigationLink(destination: Child(), label: { Text("Next") })
}
}
}
这是SwiftUI错误还是预期行为?
编辑:我已经在Apple的反馈助理中用ID打开了一个问题,FB7423964
以防Apple有人担心:)。
编辑:我在反馈助手中打开票证表明有10多个类似的已报告问题。他们已使用更新了分辨率Resolution: Potential fix identified - For a future OS update
。手指交叉,修复很快就到了。
编辑:这已在iOS 13.3中修复!
ContentView.swift
。我将对帖子进行编辑,但是崩溃只会在您前后导航时发生。