RxSwift 登錄頁面邏輯

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章