尝试创建多屏幕流时,SwiftUI“推送”NavigationView/NavigationLink不工作
在SwiftUI中,我设置了一个4屏幕流1>2>3>4,用户可以点击每个屏幕上的next导航到下一个屏幕,就像UIKit中的典型推送流一样。Im使用编程导航链接,例如isActive参数,以实现灵活性。它到达屏幕3,但由于某种原因,在屏幕3上点击next并不能导航到屏幕4。我想不出来尝试创建多屏幕流时,SwiftUI“推送”NavigationView/NavigationLink不工作,swiftui,Swiftui,在SwiftUI中,我设置了一个4屏幕流1>2>3>4,用户可以点击每个屏幕上的next导航到下一个屏幕,就像UIKit中的典型推送流一样。Im使用编程导航链接,例如isActive参数,以实现灵活性。它到达屏幕3,但由于某种原因,在屏幕3上点击next并不能导航到屏幕4。我想不出来 struct FlowView: View { @State var navigateToScreen2 = false @State var navigateToScreen3 = false @State va
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")
}
}
谢谢是的,它读起来确实更好,但是试图将导航状态保持在单个视图之外。示例代码只是演示问题的一种方式。我的目标是让屏幕视图不知道它们如何适应导航,并有一个控制导航的整体视图。不过我还是会考虑这个想法的,谢谢你。我的问题是为什么代码不起作用?导航链接没有很好地放置在按钮中。使用按钮操作+NavigationLink的双重绑定双重触发状态。当您在视图之间频繁切换时,您还会看到奇怪的行为,例如在视图之间突然来回跳跃。NavigationLink不在按钮内-我不确定是否遵循。当点击按钮时,NavigationLink会被执行。这就是我在按钮内的意思。我认为这一切足以回答一个问题。这不是聊天平台:-