我正在尝试通过单击按钮从一个导航视图导航到另一个导航视图。流程应该是内容视图 -> 登录视图 -> 密码视图。我通过附加到导航路径成功从内容导航到登录,但是当我尝试在登录视图中执行相同操作以转到密码时,它不起作用。这是在视图之间导航的正确方法吗?我不确定为什么以下内容不适用于“登录”->“密码”。
... Content View
@State private var path = NavigationPath()
var body: some View {
NavigationStack(path: $path) {
ZStack {
...some view
Button(action: {path.append("LoginView")}) {
Image(systemName: "arrow.right")
.frame(width:30, height: 30)
.background(.white.opacity(0.5))
.foregroundColor(.white)
.clipShape(Circle()).padding(.top, 580)
}.navigationDestination(for: String.self) { view in
if view == "LoginView" {
LoginView()
}
else {
PasswordView()
}
}
}
}
}
// login page
struct LoginView: View {
@State private var username: String = ""
@State private var path = NavigationPath()
var body: some View {
NavigationView {
NavigationStack {
ZStack {
VStack {
Button(action: {path.append("PasswordView")}) {
Text("Continue")
.padding(.horizontal, 125)
.padding(.vertical, 10)
.font(.system(size: 16, weight: .medium))
.foregroundColor(Color("DarkGreen"))
.background(Color("PrimaryGreen"))
.cornerRadius(25)
}.navigationDestination(for: String.self) { view in
if view == "PasswordView" {
PasswordView()
}
}
}
}
}
}
}
// password page
struct PasswordView: View {
@State private var password: String = ""
var body: some View {
NavigationView {
ZStack {
...password view
}
}
}
}
查看 LoginView 中的代码,您忘记在 NavigationStack 中添加路径,因此它没有执行目标代码
更改代码
NavigationStack { ...}
到
NavigationStack(path: $path) {
... Your code
}
希望有帮助!