-
-
Notifications
You must be signed in to change notification settings - Fork 19
Refreshable
林洵锋 edited this page Aug 29, 2020
·
5 revisions
1、遵守协议 Refreshable
class LXFRefreshableController: UIViewController, View, Refreshable {}
2、配置与绑定
// 自定义配置
/*
rx.refresh<T: RefreshControllable>(
_ vm: T,
_ scrollView: UIScrollView,
headerConfig: RefreshableHeaderConfig? = nil,
footerConfig: RefreshableFooterConfig? = nil
) -> Observable<RefreshType>
*/
// 注:vm 需要传入一个遵守了 RefreshControllable 协议的对象
self.rx.refresh(reactor, tableView)
.map { .fetchList($0 == .header) }
.bind(to: reactor.action)
.disposed(by: disposeBag)
这里也可以单独设置上下拉
// 自定义配置
self.rx.headerRefresh(reactor, tableView, headerConfig: RefreshConfig.normalHeader)
.map { .fetchList(true) }
.bind(to: reactor.action)
.disposed(by: disposeBag)
// 默认配置
self.rx.footerRefresh(reactor, tableView)
.map { .fetchList(false) }
.bind(to: reactor.action)
.disposed(by: disposeBag)
3、viewModel 遵守协议
final class LXFRefreshableReactor: Reactor, RefreshControllable {}
遵守协议 RefreshControllable
后便拥有 refreshStatus
属性,可以用来控制刷新控件的状态
self.lxf.refreshStatus.accept(.noMoreData)
self.lxf.refreshStatus.accept(.resetNoMoreData)
如果一个界面有多个 UIScrollView
,且需要分别控件刷新状态,那么可以使用 refreshStatusRespective
属性
// 参数一:状态
// 参数二:UIScrollView 的 tag
lxf.refreshStatusRespective.accept((.noMoreData, viewTag))