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())



你可能感兴趣的:(RxSwift基本使用)