swift - 点击登录按钮时如何更改视图?
问题描述
@State private var email = ""
@State private var password = ""
@EnvironmentObject var session:SessionStore
@EnvironmentObject var viewRouter:ViewRouter
func signIn(email: email, password: password) { (result, error) in
if let error = error {
self.error = error.localizedDescription}
else {
self.email = ""
self.password = ""
}
}
var body: some View {
if (error != "") {
Text(error)
}
Button(action: {
signIn()
viewRouter.currentPage = .entrypage
}, label: {
Text("Sign In")
})
}
当我点击登录按钮时,无论电子邮件和密码是否为空,视图都会发生变化。我想在电子邮件或密码为空时设置条件以显示错误,否则要登录并更改视图。
解决方案
有多种解决方案。这是一个:您可以像这样在按钮上使用三元运算符来防止在没有电子邮件/密码时使用该按钮:.disabled(self.email == "" || self.password == "" )
针对您的评论编辑的答案:
Button(action: {
if self.email == "" || self.password == "" {
self.error = "Please enter your credentials first."
}
else {
signIn()
viewRouter.currentPage = .entrypage
}
}, label: {
Text("Sign In")
})
推荐阅读
- javascript - 有没有办法从外部链接打开引导模式对话框,比如另一个网站?
- php - drupal_realpath 有时不返回正确的路径
- spring - 客户端发送的请求在语法上不正确 HTTP 状态 400 - 类型
- highcharts - highcharts 中的标志错位了
- laravel-5 - Laravel 5.2 自定义验证器没有给出错误
- android - Parcelable 在读取 Serializable 对象时遇到 ClassNotFoundException
- eclipse-plugin - 动态复合部分eclipse e4
- windows-installer - 如何访问二进制表并用于管理代码自定义操作?
- python-3.x - 如何获得多处理队列的确切大小???文档说它不可靠。有什么办法可以解决这个问题?
- vb.net - 如何在 vb.net 中使用新的 vb6 集合