在进入下一个屏幕之前,我想验证我的TextField“用户名”和TextField“密码”是否为空。在SwiftUI中可以吗?
示例我在Swift中执行此操作:-
@IBAction func btnSignInTapped(_ sender: UIButton) {
if (String.isStringEmpty(aString: getString(anything: tfUserName.text))) {
//Error message
return
} else if (String.isStringEmpty(aString: getString(anything: tfPassword.text))) {
//Error message
return
} else {
//Push screen
}
}
类似地,我该如何在SwiftUI中做到这一点?
答案 0 :(得分:1)
一旦您接受了SwiftUI的“声明式”性质,就很容易做到。这是一个Swift游乐场,展示了一种非常准系统的方法:
import SwiftUI
import PlaygroundSupport
struct ContentView : View {
@State private var email: String = ""
@State private var password: String = ""
private var validated: Bool {
!email.isEmpty && !password.isEmpty
}
var body: some View {
Group {
TextField("email", text: $email)
TextField("password", text: $password)
if validated {
Button("Login") {
print("Logging in")
}
}
}
}
}
PlaygroundPage.current.liveView = UIHostingController(rootView: ContentView())
基本上,您不在TextField
上工作,而是在@State
上工作,并指示UI仅在满足条件时才显示按钮。
当然,如果验证比我们这里要复杂的多,则可能需要使用View-Model对象。