Rx

RxSwift源码分析(22)——TableView

2020-11-14  本文已影响0人  无悔zero

上一篇介绍了中介者,今天的探索也跟中介者有关,中介者真的非常多。直接来看看下面的例子:

let dataOb = BehaviorSubject.init(value: dataArray)
//绑定数据源
dataOb.asObserver()
.bind(to: tableView.rx.items(cellIdentifier: "TestTableViewCell", cellType: TestTableViewCell.self)){ (row, model, cell) in
    cell.setUIData(model as! TestModel)
}.disposed(by: disposeBag)
//点击事件
tableView.rx.itemSelected
.subscribe(onNext: { (indexPath) in
    print("点击")
}).disposed(by: disposeBag)

有了RxSwift使用tableview真的很方便,再也不用自己实现各种代理和协议,那我们就来看看它是怎么帮我们做这些的(就看看流程好了😨):

  1. 进入源码,马上看到cell的创建:

原来是_RxTableViewReactiveArrayDataSource实现了datasource的方法。

  1. 接着下一步先是看到了delegate的设置:
  1. 然后返回销毁者之前又设置了datasource

原来再一次走这个函数方法:

  1. tableView的显示完成了,最后就是交互事件的实现:

通过self.delegate.methodInvoked便可在外面的响应闭包回调交互事件。

上一篇 下一篇

猜你喜欢

热点阅读