//
|
// YYRefreshHeader.swift
|
// OKProject
|
//
|
// Created by alvin_y on 2020/5/28.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import Foundation
|
import RxSwift
|
import RxCocoa
|
import MJRefresh
|
|
class YYRefreshHeader: MJRefreshNormalHeader {
|
|
static func refreshing(with refreshingBlock: @escaping MJRefreshComponentRefreshingBlock) -> MJRefreshNormalHeader? {
|
|
let refreshHeader = MJRefreshNormalHeader(refreshingBlock: refreshingBlock)
|
|
refreshHeader.lastUpdatedTimeLabel?.isHidden = true
|
|
return refreshHeader
|
}
|
|
}
|
|
class YYRefreshFooter: MJRefreshAutoNormalFooter {
|
|
static func refreshing(with refreshingBlock: @escaping MJRefreshComponentRefreshingBlock) -> MJRefreshAutoNormalFooter? {
|
|
let refreshFooter = MJRefreshAutoNormalFooter(refreshingBlock: refreshingBlock)
|
|
refreshFooter.isHidden = true
|
|
return refreshFooter
|
}
|
}
|
|
extension UITableView {
|
|
func handle(status: RefreshStatus) {
|
|
switch status {
|
|
case .refreshing:
|
self.mj_footer?.isHidden = true
|
|
case .loading:
|
self.mj_footer?.isHidden = false
|
|
case .completedLoadWithNoMoreData:
|
self.mj_footer?.isHidden = true
|
self.reloadData()
|
self.mj_header?.endRefreshing()
|
self.mj_footer?.endRefreshing()
|
|
case .refreshingError(let error):
|
self.mj_header?.endRefreshing()
|
self.mj_footer?.endRefreshing()
|
alert(text: error.localizedDescription)
|
|
case .loadingError(let error):
|
self.mj_header?.endRefreshing()
|
self.mj_footer?.endRefreshing()
|
alert(text: error.localizedDescription)
|
|
default:
|
self.mj_footer?.isHidden = false
|
self.reloadData()
|
self.mj_header?.endRefreshing()
|
self.mj_footer?.endRefreshing()
|
}
|
}
|
}
|
|
extension UICollectionView {
|
|
func handle(status: RefreshStatus) {
|
|
switch status {
|
|
case .refreshing:
|
self.mj_footer?.isHidden = true
|
|
case .loading:
|
self.mj_footer?.isHidden = false
|
|
case .completedLoadWithNoMoreData:
|
self.mj_footer?.isHidden = true
|
self.reloadData()
|
self.mj_header?.endRefreshing()
|
self.mj_footer?.endRefreshing()
|
|
case .refreshingError(let error):
|
self.mj_header?.endRefreshing()
|
self.mj_footer?.endRefreshing()
|
alert(text: error.localizedDescription)
|
|
case .loadingError(let error):
|
self.mj_header?.endRefreshing()
|
self.mj_footer?.endRefreshing()
|
alert(text: error.localizedDescription)
|
|
default:
|
self.mj_footer?.isHidden = false
|
self.reloadData()
|
self.mj_header?.endRefreshing()
|
self.mj_footer?.endRefreshing()
|
}
|
}
|
}
|
|
extension Reactive where Base : UITableView {
|
|
func handlestatus() -> Binder<RefreshStatus> {
|
|
return Binder(self.base) { (tableView, status) in
|
switch status {
|
|
case .refreshing:
|
self.base.mj_footer?.isHidden = true
|
|
case .loading:
|
self.base.mj_footer?.isHidden = false
|
|
case .completedLoadWithNoMoreData:
|
self.base.mj_footer?.isHidden = true
|
self.base.reloadData()
|
self.base.mj_header?.endRefreshing()
|
self.base.mj_footer?.endRefreshing()
|
|
case .refreshingError(let error):
|
self.base.mj_header?.endRefreshing()
|
self.base.mj_footer?.endRefreshing()
|
alert(text: error.localizedDescription)
|
|
case .loadingError(let error):
|
self.base.mj_header?.endRefreshing()
|
self.base.mj_footer?.endRefreshing()
|
alert(text: error.localizedDescription)
|
|
default:
|
self.base.mj_footer?.isHidden = false
|
self.base.reloadData()
|
self.base.mj_header?.endRefreshing()
|
self.base.mj_footer?.endRefreshing()
|
}
|
}
|
|
}
|
}
|
|
extension Reactive where Base : UICollectionView {
|
|
func handlestatus() -> Binder<RefreshStatus> {
|
|
return Binder(self.base) { (tableView, status) in
|
switch status {
|
|
case .refreshing:
|
self.base.mj_footer?.isHidden = true
|
|
case .loading:
|
self.base.mj_footer?.isHidden = false
|
|
case .completedLoadWithNoMoreData:
|
self.base.mj_footer?.isHidden = true
|
self.base.reloadData()
|
self.base.mj_header?.endRefreshing()
|
self.base.mj_footer?.endRefreshing()
|
|
case .refreshingError(let error):
|
self.base.mj_header?.endRefreshing()
|
self.base.mj_footer?.endRefreshing()
|
alert(text: error.localizedDescription)
|
|
case .loadingError(let error):
|
self.base.mj_header?.endRefreshing()
|
self.base.mj_footer?.endRefreshing()
|
alert(text: error.localizedDescription)
|
|
default:
|
self.base.mj_footer?.isHidden = false
|
self.base.reloadData()
|
self.base.mj_header?.endRefreshing()
|
self.base.mj_footer?.endRefreshing()
|
}
|
}
|
|
}
|
}
|