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)