RxSwift 登录页面逻辑
2019-08-04 本文已影响0人
紫水依
RxSwift实现页面登录
控制用户名和密码的输入长度,当用户名和密码都正确输入后按钮可以点击
//username.rx.text序列,控制显示
let usernameValid = username.rx.text.orEmpty
.map { (text) -> Bool in //Result是泛型,Any任意类型
return text.count >= minUsernameCount
}
//输入框满足条件后提示隐藏
usernameValid.bind(to: usernameValidLabel.rx.isHidden)
.disposed(by: disposeBag)
//用户名满足条件后才可以输入密码
usernameValid.bind(to: password.rx.isEnabled)
.disposed(by: disposeBag)
let passwordValid = password.rx.text.orEmpty
.map { (text) -> Bool in //Result是泛型,Any任意类型
return text.count >= minPasswordCount
}
//输入框满足条件后提示隐藏
passwordValid.bind(to: passwordValidLabel.rx.isHidden)
.disposed(by: disposeBag)
//两个输入框决定按钮是否可点击
Observable.combineLatest(usernameValid, passwordValid) { $0 && $1 }
.bind(to: login.rx.isEnabled)
.disposed(by: disposeBag) //disposeBag如果为DisposeBag(),则创建的是临时变量,
//说明序列只会执行一次就被销毁,没有起到垃圾袋的效果
login.rx.tap
.subscribe(onNext: { () in
print("可以登录了")
})
.disposed(by: disposeBag)