如何才能使当我单击 NavigationLink 时,它首先检查布尔值并相应地继续?例如。
Navigationlink(go){
goToAScreen ? Ascreen() : Bscreen()
}
现在 NavigationLink isActive 已被弃用,我找不到任何解决方法,我实际上想在特定布尔值为 true 时显示警报,否则我希望它转到 someScreen()
您可以实现您想要的目标(我假设这是用于登录页面):
struct ContentView: View {
@State var isPasswordCorrect: Bool?
@State var password = ""
var body: some View {
NavigationStack {
VStack {
TextField("Enter password", text: $password)
.textFieldStyle(.roundedBorder)
Button("Log in") {
if password == "1234" {
isPasswordCorrect = true
} else {
isPasswordCorrect = false
}
}
}
.navigationDestination(isPresented: .constant(isPasswordCorrect == true)) {
Text("Profile")
}
}
.alert("Incorrect password", isPresented: .constant(isPasswordCorrect == false)) {
Button("Ok", role: .cancel) { }
}
}
}
我已经有一段时间没有使用 SwiftUI了,所以我不记得像这样使用
.constant(_:)
是否是一个好主意。如果您不喜欢这种方法,我建议您查看 this 以获得将表达式转换为布尔绑定的更好方法。