Rx.swift的基本使用

197 阅读1分钟

代替按钮响应事件

 let mybutton = UIButton()

 let disposeBag = DisposeBag()

  mybutton.rx.tap.subscribe(onNext: { () in

      print("jfkfjk")

  }, onError: nil, onCompleted: nil, onDisposed: nil).disposed(by: disposeBag)

代替手势监听事件

let tap = UITapGestureRecognizer()

self.label.addGestureRecognizer(tap)

self.label.isUserInteractionEnabled = true
tap.rx.event.subscribe(onNext: { (tap) in
      print(tap.view)
})
.disposed(by: disposeBag)

RxSwift替代textfiled的代理

let textfiled = UITextField()

textfiled.rx.text.orEmpty.subscribe(onNext: { (text) in

     print(text)

}, onError: nil, onCompleted: nil, onDisposed: nil).disposed(by: disposeBag)

RxSwift textfiled绑定Button的文字

        textfiled.rx.text.bind(to: mybutton.rx.title()).disposed(by: disposeBag)

RxSwift监听ScrollView滑动

scrollView\.rx.contentOffset.subscribe(onNext: {\[weak self] (content) in

      self?.view\.backgroundColor = UIColor.init()

}, onError: nil, onCompleted: nil, onDisposed: nil).disposed(by: disposeBag)

RxSwift替代Timer定时器

let timer = Observable<Int>.interval(1, scheduler: MainScheduler.instance)

timer.subscribe(onNext: { (num) in

  print(num)

}, onError: nil, onCompleted: nil, onDisposed: nil).disposed(by: disposeBag)

RxSwift替代通知监听

NotificationCenter.default.rx.notification(UIResponder.keyboardDidShowNotification).subscribe(onNext: { (noti) in

     print(noti)

}, onError: nil, onCompleted: nil, onDisposed: nil).disposed(by: disposeBag)

RxSwift替代KVO

//监听person对象的name的变化


self.person.rx.observeWeakly(String.self, "name")

.subscribe(onNext: { (value) in

     print(value as Any)

})
.disposed(by: disposeBag)

RxSwift核心逻辑图解

image.png