首页 > 解决方案 > 点击登录按钮时如何更改视图?

问题描述

@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")
    })
    
}

当我点击登录按钮时,无论电子邮件和密码是否为空,视图都会发生变化。我想在电子邮件或密码为空时设置条件以显示错误,否则要登录并更改视图。

标签: swiftswiftui

解决方案


有多种解决方案。这是一个:您可以像这样在按钮上使用三元运算符来防止在没有电子邮件/密码时使用该按钮:.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")
})

推荐阅读