RXSwift常用操作

xiaoxiao2021-02-28  109

1.按钮的点击 testBtn1.rx.tap.subscribe { (event : Event<()>) in             print("按钮1发生了点击")         }.addDisposableTo(bag) 2.监听文本框的输入 textField1.rx.text.subscribe { (event : Event<String?>) in             print(event.element!!)             }.addDisposableTo(bag) textField1.rx.text.subscribe(onNext: { (str : String?) in             print(str!)         }).addDisposableTo(bag) 3.将textField与lable绑定 textField1.rx.text             .bindTo(testLabel1.rx.text)             .addDisposableTo(bag) 4.监听文本框的改变 testLabel1.rx.observe(String.self, "text")             .subscribe(onNext: { (str : String?) in                 print(str)             }).addDisposableTo(bag) 5.监听scrollVIew的偏移 scrollView.rx.contentOffset             .subscribe(onNext: { (point : CGPoint) in                 print(point)             }).addDisposableTo(bag) 6.登录界面的逻辑控制 /// 事件监听     func initEventHandle() {         weak var weakSelf = self         let phoneTextFieldValid = phoneTextField.rx.text             .map{_ in                 return String.isPhoneNum(phoneNum: (weakSelf?.phoneTextField.text!)!)             }         let pwdFieldValid = pwdTextField.rx.text.map { _ in             return String.isPassWord(pwd: (weakSelf?.pwdTextField.text!)!)         }                  // 用户名密码都通过验证,才可以点击按钮         let everythingValid = Observable.combineLatest(phoneTextFieldValid, pwdFieldValid) { (phoneValid, passwordValid) -> Bool in             phoneValid && passwordValid         }.subscribe(onNext: { (isvalid) in             if isvalid==true {                 weakSelf?.loginBtn.isEnabled = true                 weakSelf?.loginBtn.backgroundColor = UIColor.tangerine             } else {                 weakSelf?.loginBtn.isEnabled = false                 weakSelf?.loginBtn.backgroundColor = UIColor.lightGray             }         }, onError: nil, onCompleted: nil, onDisposed: nil)         everythingValid.addDisposableTo(disposBag) // 释放     } 7. PublishSubject& ReplaySubject // 1.PublishSubject, 订阅者只能接受, 订阅之后发出的事件         let publishSub = PublishSubject<String>()         publishSub.onNext("18")         publishSub.subscribe { (event : Event<String>) in             print(event)         }.addDisposableTo(bag)         publishSub.onNext("coderwhy")         print("-------------------------")         // 2.ReplaySubject, 订阅者可以接受订阅之前的事件&订阅之后的事件         let replaySub = ReplaySubject<String>.createUnbounded()         replaySub.onNext("a")         replaySub.onNext("b")         replaySub.onNext("c")                 replaySub.subscribe { (event : Event<String>) in             print(event)         }.addDisposableTo(bag)         replaySub.onNext("d”) 结果: next(coderwhy) ------------------------- next(a) next(b) next(c) next(d) 8、Variable,下面的例子可以用在网络请求完成刷新ui界面的场景 // Variable         /*          Variable             1> 相当于对BehaviorSubject进行装箱             2> 如果想将Variable当成Obserable, 让订阅者进行订阅时, 需要asObserable转成Obserable             3> 如果Variable打算发出事件, 直接修改对象的value即可             4> 当事件结束时,Variable会自动发出completed事件         */         let variable = Variable(“a")         variable.value = "b"                 variable.asObservable().subscribe { (event : Event<String>) in             print(event)         }.addDisposableTo(bag) 9、Swift中如何使用map let array = [1, 2, 3, 4] let array2 = array.map({ $0 * $0 }) print(array2) //在RxSwift中map函数的使用         Observable.of(1, 2, 3, 4)             .map { (num : Int) -> Int in                 return num * num             }             .subscribe { (event : Event<Int>) in                 print(event)             }             .addDisposableTo(bag) 10、RXSwift中tableView的使用 heroVM.herosObserable.asObservable()             .bindTo(tableView.rx.items(cellIdentifier: "HeroCellID", cellType: UITableViewCell.self)) { row, hero, cell in                 cell.textLabel?.text = hero.name                 cell.detailTextLabel?.text = hero.intro                 cell.imageView?.image = UIImage(named: hero.icon)         }.addDisposableTo(bag)                  tableView.rx.itemSelected.subscribe(onNext: { (indexPath) in             print(indexPath)         }).addDisposableTo(bag)                  tableView.rx.modelSelected(Hero.self).subscribe(onNext: { (hero : Hero) in             print(hero.name)         }).addDisposableTo(bag) 11.手势         let tap = UITapGestureRecognizer()         iconView.addGestureRecognizer(tap)         tap.rx.event             .subscribe(onNext: { [weak self] x in                              })             .disposed(by: bag)

12.通知

_ = NotificationCenter.default.rx.notification(Notification.Name(rawValue: "message"), object: nil).subscribe { (noti) in             print("收到通知")         }

转载请注明原文地址: https://www.6miu.com/read-50713.html

最新回复(0)