RxSwift實(shí)現(xiàn)頁(yè)面登錄
控制用戶名和密碼的輸入長(zhǎng)度,當(dāng)用戶名和密碼都正確輸入后按鈕可以點(diǎn)擊
//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)
//兩個(gè)輸入框決定按鈕是否可點(diǎn)擊
Observable.combineLatest(usernameValid, passwordValid) { $0 && $1 }
.bind(to: login.rx.isEnabled)
.disposed(by: disposeBag) //disposeBag如果為DisposeBag()婉陷,則創(chuàng)建的是臨時(shí)變量料按,
//說(shuō)明序列只會(huì)執(zhí)行一次就被銷毀,沒(méi)有起到垃圾袋的效果
login.rx.tap
.subscribe(onNext: { () in
print("可以登錄了")
})
.disposed(by: disposeBag)