mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
添加 MJRefresh+rx
This commit is contained in:
parent
61ce0d7323
commit
aa440337e2
90
Common/MJRefresh+Rx.swift
Normal file
90
Common/MJRefresh+Rx.swift
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
//
|
||||||
|
// MJRefresh+Rx.swift
|
||||||
|
// Bark
|
||||||
|
//
|
||||||
|
// Created by huangfeng on 2020/11/22.
|
||||||
|
// Copyright © 2020 Fin. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
import RxCocoa
|
||||||
|
import RxSwift
|
||||||
|
import MJRefresh
|
||||||
|
|
||||||
|
extension Reactive where Base : MJRefreshComponent {
|
||||||
|
var refresh: ControlEvent<Void> {
|
||||||
|
|
||||||
|
let source = Observable<Void>.create {[weak control = self.base] (observer) -> Disposable in
|
||||||
|
MainScheduler.ensureExecutingOnScheduler()
|
||||||
|
guard let control = control else {
|
||||||
|
observer.onCompleted()
|
||||||
|
return Disposables.create()
|
||||||
|
}
|
||||||
|
control.refreshingBlock = {
|
||||||
|
observer.onNext(())
|
||||||
|
}
|
||||||
|
return Disposables.create()
|
||||||
|
}
|
||||||
|
return ControlEvent(events: source)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
enum MJRefreshAction {
|
||||||
|
/// 不做任何事情
|
||||||
|
case none
|
||||||
|
/// 开始刷新
|
||||||
|
case begainRefresh
|
||||||
|
/// 停止刷新
|
||||||
|
case endRefresh
|
||||||
|
/// 开始加载更多
|
||||||
|
case begainLoadmore
|
||||||
|
/// 停止加载更多
|
||||||
|
case endLoadmore
|
||||||
|
/// 显示无更多数据
|
||||||
|
case showNomoreData
|
||||||
|
/// 重置无更多数据
|
||||||
|
case resetNomoreData
|
||||||
|
}
|
||||||
|
|
||||||
|
extension Reactive where Base:UIScrollView {
|
||||||
|
|
||||||
|
/// 执行的操作类型
|
||||||
|
var refreshAction:Binder<MJRefreshAction> {
|
||||||
|
|
||||||
|
return Binder(base) { (target, action) in
|
||||||
|
|
||||||
|
switch action{
|
||||||
|
case .begainRefresh:
|
||||||
|
if let header = target.mj_header {
|
||||||
|
header.beginRefreshing()
|
||||||
|
}
|
||||||
|
case .endRefresh:
|
||||||
|
if let header = target.mj_header {
|
||||||
|
header.endRefreshing()
|
||||||
|
}
|
||||||
|
case .begainLoadmore:
|
||||||
|
if let footer = target.mj_footer {
|
||||||
|
footer.beginRefreshing()
|
||||||
|
}
|
||||||
|
case .endLoadmore:
|
||||||
|
if let footer = target.mj_footer {
|
||||||
|
footer.endRefreshing()
|
||||||
|
}
|
||||||
|
case .showNomoreData:
|
||||||
|
if let footer = target.mj_footer {
|
||||||
|
footer.endRefreshingWithNoMoreData()
|
||||||
|
}
|
||||||
|
case .resetNomoreData:
|
||||||
|
if let footer = target.mj_footer {
|
||||||
|
footer.resetNoMoreData()
|
||||||
|
}
|
||||||
|
break
|
||||||
|
case .none:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user