RxSwift基本使用

登陆限制最小字数并绑定使用

let usernameOutlet = UITextField()
let passwordOutlet = UITextField()
let doSomethingButton = UIButton(type: .custom)

let usernameValid = usernameOutlet.rx.text.orEmpty
    // 用户名 -> 用户名是否有效
    .map { $0.count >= 5 }  // 判断usernameOutlet中的文字个数是否大于5
    .share(replay: 1)

let passwordValid = passwordOutlet.rx.text.orEmpty
    // 密码 -> 密码是否有效
    .map { $0.count >= 5 }  // 判断passwordOutlet中的文字个数是否大于5
    .share(replay: 1)

// 控制是否可输入
usernameValid
        .bind(to: passwordOutlet.rx.isEnabled)
        .disposed(by: DisposeBag())

// 控制是否隐藏
usernameValid
    .bind(to: passwordOutlet.rx.isHidden)
    .disposed(by: DisposeBag())


// 合并成一个信号
let everythingValid = Observable.combineLatest(
    usernameValid,
    passwordValid
) { $0 && $1 }
    .share(replay: 1)

// 所有输入是否有效 -> 按钮是否可点击
everythingValid
    .bind(to: doSomethingButton.rx.isEnabled)
    .disposed(by: DisposeBag())

doSomethingButton.rx.tap
    .subscribe(onNext: { (_) in
        print("点击doSomethingButton")
    })
    .disposed(by: DisposeBag())



©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容