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)

你可能感兴趣的:(RxSwift 登录页面逻辑)