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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容