met*_*r22 -4 ios swift swiftui
我创建了一个登录页面,但无法验证它。您可以创建我不希望他们在未经验证的情况下登录吗?我想要电子邮件验证和至少 8 个字符的密码。swiftui 我正在学习新内容。不幸的是,我没有信息可以做到这一点。
@State private var username = ""
@State private var password = ""
var body: some View {
NavigationView{
VStack{//1-1//---
TextField("username", text: $username)
.frame(width: 300, height:50 , alignment: .center)
.padding(5)
.font(Font.system(size: 15, weight: .medium, design: .serif))
.overlay(RoundedRectangle(cornerRadius: 30).stroke(Color.init( red: 45/255, green: 0/255, blue: 112/255), lineWidth: 1))
TextField("password", text: $password).frame(width: 300, height:50 ,alignment: .center)
.padding(5)
.font(Font.system(size: 15, weight: .medium, design: .serif))
.overlay(RoundedRectangle(cornerRadius: 30).stroke(Color.init( red: 45/255, green: 0/255, blue: 112/255), lineWidth: 1))
Button(action: {
let url = "https:-----------------------"
let params: [String: String] = ["email": username, "password": password]
AF.request(url, method: .post, parameters: params).responseJSON {response in
switch response.result {
case .success : print(response.result)
case .failure(let error) : print("error\(error)")
}
}
}, label: {
Text("Sign Up")
.padding(10)
.font(Font.system(size: 30, weight: .medium, design: .serif))
.foregroundColor(.white)
.background(RoundedRectangle(cornerRadius: 30))
.foregroundColor(.init(red: 45/255, green: 0/255, blue: 112/255))
})
Run Code Online (Sandbox Code Playgroud)
这是如何添加验证的演示。
import Combine
import SwiftUI
struct LoginViewV: View {
@State private var email = ""
@State private var password = ""
var body: some View {
VStack {
TextField("Email", text: $email)
TextField("Password", text: $password)
.onReceive(Just(password), perform: { _ in
// This is for max char. If you want to set limit for character, set here
if password.count >= 12 {
password = String(password.prefix(12))
}
})
Button(action: {
// Show error message here
if let errorMessage = self.validView() {
print(errorMessage)
return
}
// Call login API here
/**
login API
*/
}, label: {
Text("Login")
})
Spacer()
}
}
private func validView() -> String? {
if email.isEmpty {
return "Email is empty"
}
if !self.isValidEmail(email) {
return "Email is invalid"
}
if password.isEmpty {
return "Password is empty"
}
if self.password.count < 8 {
return "Password should be 8 character long"
}
// Do same like other validation as per needed
return nil
}
private func isValidEmail(_ email: String) -> Bool {
let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPred = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailPred.evaluate(with: email)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |