美文网首页
RXSwift初体验

RXSwift初体验

作者: 魔灵abc | 来源:发表于2019-07-23 23:51 被阅读0次

RxSwift作用

  • 在以前编写代码的时候,经常需要监听按钮的点击事件,textField文本框输入值的变化等,通过addTarget或者delegate等来完成事件的点击或者获取输入的新值,代码分散,不易查找,而Rx将常用的事件转化为Rx信号,使业务逻辑和功能逻辑绑定到一起,方便查找。

RxSwift安装(通过cocoapods)

target 'swiftDemo' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

 pod 'RxSwift', '~> 5.0.0'
 pod 'RxCocoa', '~> 5.0.0'
end

在需要使用 RxSwift 的地方 import 进来就可以了

import RxSwift
import RxCocoa
  • RxSwift:它只是基于 Swift 语言的 Rx 标准实现接口库,所以 RxSwift 里不包含任何 Cocoa 或者 UI方面的类。
  • RxCocoa:是基于 RxSwift针对于 iOS开发的一个库,它通过 Extension 的方法给原生的比如 UI 控件添加了 Rx 的特性,使得我们更容易订阅和响应这些控件的事件。

RxSwift简单实用对比

  • 注意事项let disposeBag = DisposeBag()


    Snip20190724_3.png
  • Button - addTarget的区别

func setupButton() {
        
        let button: UIButton = UIButton.init(type: .custom)
        button.frame = CGRect(x: 10, y: 30, width: 60, height: 50);
        button.backgroundColor = UIColor.red
        button.setTitle("系统按钮", for: .normal)
        button.titleLabel?.font = UIFont.systemFont(ofSize: 13)
        button.addTarget(self, action: #selector(buttonClick(_:)), for: .touchUpInside)
        self.view.addSubview(button)
    }
    @objc func buttonClick(_ sender: UIButton) {
        print("点我啊")
    }
    
    func setupRXButton() {
        let button: UIButton = UIButton.init(type: .custom)
        button.frame = CGRect(x: 90, y: 30, width: 60, height: 50);
        button.backgroundColor = UIColor.blue
        button.setTitle("RX按钮", for: .normal)
        button.titleLabel?.font = UIFont.systemFont(ofSize: 13)
        self.view.addSubview(button)
    
        let _ = button.rx.tap
            .subscribe(onNext: { () in
                print("rx按钮点击")
            }).disposed(by: disposeBag)
    }
  • textField - delegate的区别
override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        inputField.delegate = self
    }
//Rx
func setRXTextField() {
       let _ = self.inputField.rx.text.orEmpty
            .subscribe(onNext: { (text) in
                print(text)
            }).disposed(by: disposeBag)
    }

extension ViewController : UITextFieldDelegate {
    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        print(textField.text ?? "",range,string)
        return true;
    }
}

相关文章

  • RXSwift初体验

    RxSwift作用 在以前编写代码的时候,经常需要监听按钮的点击事件,textField文本框输入值的变化等,通过...

  • RxSwift的初体验

    RxSwift是一种函数式响应编程的框架。RxSwift遵循Functional Reactive Program...

  • RxSwift + MVVM 初体验

    一、原起 作为一名iOS开发者,必须跟上时代的潮流,随着swift ABI越来越稳定,使用swift开发iOS A...

  • RxSwift使用初体验

    最近有幸学习了一下RxSwift框架,突然有了一种发现新大陆的感觉,虽然之前也一直在用OC的RAC框架,但是在Sw...

  • RxSwift 源码解析01:RxSwift初体验

    本文主要是RxSwift Demo的体验 RxSwift 介绍 RxSwift = ReactiveX + Swi...

  • RXSwift-初体验(随想)

    为什么要学RXSwift? 有产生这个疑问的同学,请先看下图 试问,这么牛逼的框架不值得去研究一番嘛??? (贴心...

  • 理解 RxSwift:实现原理(二)

    理解 RxSwift:为什么要使用 RxSwift(一) 理解 RxSwift:实现原理(二) RxSwift 内...

  • Swift - RxSwift入门介绍

    RxSwift介绍 RxSwift主页RxSwift中文文档 RxSwift 是 ReactiveX 家族的重要一...

  • 理解 RxSwift:为什么要使用 RxSwift(一)

    理解 RxSwift:为什么要使用 RxSwift(一) 理解 RxSwift:实现原理(二) RxSwift 是...

  • RxSwift4.0初体验(一)

    简介 时隔1年,随着项目的推移和时间的变迁,swift语言的不断完善和进步,我们技术方向也随之改变,由之前的oc逐...

网友评论

      本文标题:RXSwift初体验

      本文链接:https://www.haomeiwen.com/subject/qxvzlctx.html