din*_*rma 3 navigation swiftui swiftui-navigationlink
由于NavigationButton不再可用,我如何检查NavigationLink中的条件以便导航到另一个视图?
NavigationLink(destination: Dashboard(userName: self.userId,
password: self.password), isActive: $showDashboard) {
Button(action: {
if self.userId.isEmpty || self.password.isEmpty {
self.isAlert = true
} else {
self.showDashboard = true
}
}) {
Text("Submit")
.foregroundColor(.white)
.font(.system(size: 22))
Dashboard()
}
.frame(minWidth: 150, idealWidth: 300, maxWidth: 450,
minHeight: 30, idealHeight: 40, maxHeight: 50, alignment: .center)
.background(Color(red: 81/255, green: 221/255, blue: 182/255))
.padding([.leading, .trailing], 20)
}
Run Code Online (Sandbox Code Playgroud)
编辑:-
另外,如果用户名和密码的长度超过 16,我想显示警报;如果长度超过 10,则显示不同的警报;如果长度为 0,则显示空消息警报。
你可以这样做:
NavigationView {
VStack {
NavigationLink(destination: Dashboard(userName: self.userId, password: self.password), isActive: $showDashboard) {
Text("")
}
Button(action: {
if self.userId.isEmpty || self.password.isEmpty {
self.isAlert = true
} else {
self.showDashboard = true
}
}) {
Text("Submit")
.foregroundColor(.green)
.font(.system(size: 22))
}
}
}
Run Code Online (Sandbox Code Playgroud)
要记住的一件事是,NavigationLink 本身就是一个按钮,当按下它时,它会导航到destinationView,该isActive参数是强制发生这种情况的一种方法(无需用户单击 NavigationLink)。截至目前,我不确定如何将逻辑嵌入到 NavigationLinks 中。
希望这可以帮助 :)
编辑:
您可以做的另一件事如下:
NavigationLink(destination:Dashboard(userName: self.userId, password: self.password)) {
Text("Submit")
}.disabled(self.userId.isEmpty || self.password.isEmpty )
Run Code Online (Sandbox Code Playgroud)
这将禁用 NavigationLink,直到两个输入字段都不为空。