【发布时间】:2021-06-17 14:06:09
【问题描述】:
我正在尝试在 NavigationView 中进行编程导航,但由于某种原因,我无法在视图之间切换。从父视图切换时,一切正常 - 但是当我在其中一个子视图中尝试切换时,我会得到这种奇怪的行为(屏幕来回切换)。我尝试禁用动画,但这没有帮助。奇怪的是,如果我删除一个列表和.navigationViewStyle(StackNavigationViewStyle()) 一切都会开始工作 - 但我需要一个列表。
这似乎有点类似于Deep programmatic SwiftUI NavigationView navigation,但我没有深层嵌套,它仍然不起作用。
我使用的是 iOS 14。
struct TestView: View {
@State private var selection: String? = nil
var body: some View {
VStack {
NavigationView {
VStack {
List {
NavigationLink(destination: Text("View A"), tag: "A", selection: self.$selection) { Text("A") }
NavigationLink(destination: Text("View B"), tag: "B", selection: self.$selection) { Text("B") }
}
}
.navigationTitle("Navigation")
}
.navigationViewStyle(StackNavigationViewStyle())
Button("Tap to show A") {
selection = "A"
}.padding()
Button("Tap to show B") {
selection = "B"
}.padding()
}
}
}
struct TestView_Previews: PreviewProvider {
static var previews: some View {
TestView()
}
}
这是我得到的行为:
【问题讨论】: