登陆限制最小字数并绑定使用
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())