SwiftUI "Push" 尝试创建多屏幕流时导航视图/导航链接不起作用



在 SwiftUI 中,我设置了一个 4 屏幕流 (1>2>3>4(,用户只需在每个屏幕上点击"下一步"即可导航到下一个屏幕 - 就像 UIKit 中的典型推送流一样。 我使用"编程"NavigationLinks(例如isActive参数(以提高灵活性。它到达屏幕 3,但由于某种原因,点击屏幕 3 上的下一步不会导航到屏幕 4。 想不通。

struct FlowView: View {
@State var navigateToScreen2 = false
@State var navigateToScreen3 = false
@State var navigateToScreen4 = false
var body: some View {
NavigationView {
VStack {
Text("Screen 1")
Button(action: { self.navigateToScreen2 = true }, label: { Text("Next") })
NavigationLink(destination:
VStack {
Text("Screen 2")
Button(action: { self.navigateToScreen3 = true }, label: { Text("Next") })
NavigationLink(destination:
VStack {
Text("Screen 3")
Button(action: { self.navigateToScreen4 = true}, label: { Text("Next") })
NavigationLink(destination:
Text("Screen 4"),
isActive: self.$navigateToScreen4,
label: { EmptyView() }
)
},
isActive: self.$navigateToScreen3,
label: { EmptyView() }
)
},
isActive: self.$navigateToScreen2,
label: { EmptyView() }
)
}
}
}

}

我会这样做。它有效并且可以更好地阅读:

struct ContentView: View {
@State private var navigateToScreen2 = false
var body: some View {
NavigationView {
NavigationLink(destination: View2(), isActive: $navigateToScreen2) {
Text("View1")
}
}
}
}
struct View2: View {
@State private var navigateToScreen3 = false
var body: some View {
NavigationLink(destination: View3(), isActive: $navigateToScreen3) {
Text("View2")
}
}
}
struct View3: View {
@State private var navigateToScreen4 = false
var body: some View {
NavigationLink(destination: View4(), isActive: $navigateToScreen4) {
Text("View3")
}
}
}
struct View4: View {
var body: some View {
Text("View4")
}
}

最新更新