问题描述
SwiftUI 3
如果堆栈大小 > 1,则弹出后导航链接不起作用
重现步骤:
- 启动应用
- 点按列表 #1 中的任意行
- 点按列表 #2 中的任意行
- 点按
Back
- 点按列表 #2 中的任意行
结果:什么都没有发生,导航链接不起作用 预期结果:我应该再次看到视图控制器 #3。
不过在 SwiftUI 2
中运行良好。
有人能够在 Swift UI 3 中使嵌套的 NavigationLinks
工作吗?我已向 Apple 提交错误报告。
import SwiftUI
@main
struct NavigationTestApp: App {
var body: some Scene {
WindowGroup {
FirstView()
}
}
}
struct FirstView: View {
var body: some View {
NavigationView {
List {
ForEach(0..<10) { i in
NavigationLink(destination: SecondView()) {
Text("Row \(i)")
.padding()
}
}
}
.navigationTitle(Text("1"))
}
}
}
struct SecondView: View {
var body: some View {
List {
ForEach(0..<10) { i in
NavigationLink(destination: ThirdView()) {
Text("Child \(i)")
.padding()
}
}
}
.navigationTitle(Text("2"))
}
}
struct ThirdView: View {
var body: some View {
vstack {
Text("?")
}
.navigationTitle(Text("3"))
}
}
解决方法
正如@loremipsum 所说,这是一个已知问题
https://github.com/bregydoc/bcidatasetIV2a
SwiftUI 已知问题 从导航堆栈中的第三个屏幕弹出后,您无法推送到第三个屏幕。 (79076444)