RxSwift之路02-----RxSwift使用方式

上篇学习了一下,简单的Rx使用的方式,这篇将更直接的使用RxSwift来写一些就简单的UI上的逻辑处理
使用下面代码即可实现一个检测用户名和密码的并作出相应处理的UI逻辑

演示效果

这里写图片描述

**示例代码如下**
import RxSwift
import RxCocoa

class ExampleViewController: UIViewController {
    let disposeBag = DisposeBag()
    let minimalUsernameLength = 5
    @IBOutlet weak var UserName: UILabel!
    @IBOutlet weak var NameTextField: UITextField!
    @IBOutlet weak var NameAlert: UILabel!
    @IBOutlet weak var passward: UILabel!
    @IBOutlet weak var PassWardTextField: UITextField!
    @IBOutlet weak var passWardAlert: UILabel!
    @IBOutlet weak var LoginButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        let userNameValid = NameTextField.rx.text.orEmpty
            .map { $0.count >= self.minimalUsernameLength }
            .share(replay: 1, scope: SubjectLifetimeScope.forever)

        let passwordValid = PassWardTextField.rx.text.orEmpty
            .map { $0.count >= self.minimalUsernameLength }
            .share(replay: 1, scope: SubjectLifetimeScope.forever)

        let evertything = Observable.combineLatest(
        userNameValid,
        passwordValid
        ){$0 && $1}
        .share(replay: 1, scope: SubjectLifetimeScope.forever)


        userNameValid
        .bind(to: PassWardTextField.rx.isEnabled)
        .disposed(by: disposeBag)

        userNameValid
        .bind(to: NameAlert.rx.isHidden)
        .disposed(by: disposeBag)


        passwordValid
        .bind(to: passWardAlert.rx.isHidden)
        .disposed(by: disposeBag)

        evertything
        .bind(to: LoginButton.rx.isEnabled)
        .disposed(by:disposeBag)

            LoginButton.rx.tap
            .subscribe(onNext: {
                self.showAlert()
            })
            .disposed(by: disposeBag)

    }

    func showAlert() {
        let alertView = UIAlertView(
            title: "RxExample",
            message: "This is wonderful",
            delegate: nil,
            cancelButtonTitle: "OK"
        )

        alertView.show()
    }

}

用以上代码即可实现,大大简化了代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值