首先导入
import RxSwift
import RxCocoa
1 RxSwift在UITableView中使用
首先定义数据模型
let bag = DisposeBag()
let persons = Observable.just([
Person(name: "Jack", age: 20),
Person(name: "Rose", age: 22),
Person(name: "Kate", age: 25)
])
persons.bind(to: tableView.rx.items(cellIdentifier: "cell")) { row, person, cell in
cell.textLabel?.text = person.name
cell.detailTextLabel?.text = "\(person.age)"
}.disposed(by: bag)
// 监听rx的模型事件
tableView.rx.itemSelected.subscribe(onNext: { path in
print("点击了", path)
}).disposed(by: bag)
tableView.rx.modelSelected(Person.self)
.subscribe(onNext: { person in
print("点击了", person)
}).disposed(by: bag)
将某一个数据和某一个组件绑定
Observable.just(0.1).bind(to: slider.rx.value).disposed(by: bag)
// 组件的监听
_ = slider.rx.value.map { (value) -> Float in
return value + 1
}.subscribe(onNext: { text in
print("结果是======",text);
})
//监听输入框下的值的变化
textField.rx.text.orEmpty.subscribe(onNext: { text in
print(text ?? "")
}).disposed(by: bag)
//监听Button按钮的点击事件
button.rx.controlEvent(.touchUpInside).subscribe(onNext: {
print("按钮被点击了")
}).disposed(by: bag)
RxSwift可以使用observable可以使用subscribe 来订阅事件,并得到结果,
当 Observable
序列的初始数据都发送完毕,它还会自动发一个 .completed
事件出来
let observable = Observable.of("A", "B", "C")
observable.subscribe(onNext: { (text) in
print("text得到的数据==========",text)
}).disposed(by: bag)
监听事件的生命周期
我们可以使用doOn方法来监听事件的生命周期,他会在每一次事件发送前被调用
let observable = Observable.of("A", "B", "C")
observable.do(onNext: { (before) in
print("====before")
}, afterNext: { (after) in
print("====after")
}, onError: { (error) in
print("====error")
}, afterError: { (afterError) in
print("====afterError")
}, onCompleted: {
print("====Completed")
}, afterCompleted: {
print("====afterCompleted")
}).subscribe { (text) in
print("text得到的数据==========",text)
}.disposed(by: bag)
我们可以使用dispose() 方法取消一个订阅行为
let observable = Observable.of("A", "B", "C")
let subscription:Disposable = observable.do(onNext: { (before) in
print("====before")
},afterNext: { (after) in
print("====after")
}, onError: { (error) in
print("====error")
}, afterError: { (afterError) in
print("====afterError")
}, onCompleted: {
print("====Completed")
}, afterCompleted: {
print("====afterCompleted")
}).subscribe { (text) in
print("text得到的数据==========",text)
}
//调用这个订阅的dispose()方法
subscription.dispose()
我们可以把一个 DisposeBag对象看成一个垃圾袋,把用户的订阅,而这个dispage在自己将要dealloc的时候,对里面的订阅者都发送dispose()方法
绑定数据
Observable.just(60).map{ return "数值:\($0)" + "20" }.subscribe(binder).dispose()
Observable的生命周期执行终止
let observable = Observable
let _ = observable
.takeUntil(self.rx.deallocated)
.map { "数值是:\($0)" }
.bind(to: label.rx.text)