历史消息下拉刷新

This commit is contained in:
Fin 2021-05-26 14:58:19 +08:00
parent 00561c0ec2
commit 91413a6032
No known key found for this signature in database
GPG Key ID: CFB59B99D87A7B93
3 changed files with 23 additions and 10 deletions

View File

@ -57,12 +57,13 @@ extension Reactive where Base:UIScrollView {
switch action{
case .begainRefresh:
if let header = target.mj_header {
header.beginRefreshing()
//使 UIRefreshControl
if let control = target.refreshControl {
control.beginRefreshing()
}
case .endRefresh:
if let header = target.mj_header {
header.endRefreshing()
if let control = target.refreshControl {
control.endRefreshing()
}
case .begainLoadmore:
if let footer = target.mj_footer {

View File

@ -63,6 +63,7 @@ class MessageListViewController: BaseViewController {
}
tableView.rx.setDelegate(self).disposed(by: rx.disposeBag)
tableView.mj_footer = MJRefreshAutoFooter()
tableView.refreshControl = UIRefreshControl()
}
override func bindViewModel() {
@ -105,6 +106,7 @@ class MessageListViewController: BaseViewController {
let output = viewModel.transform(
input: MessageListViewModel.Input(
refresh: tableView.refreshControl!.rx.controlEvent(.valueChanged).asDriver(),
loadMore: tableView.mj_footer!.rx.refresh.asDriver(),
itemDelete: tableView.rx.itemDeleted.asDriver(),
itemSelected: tableView.rx.modelSelected(MessageTableViewCellViewModel.self).asDriver(),

View File

@ -14,6 +14,7 @@ import RealmSwift
class MessageListViewModel: ViewModel,ViewModelType {
struct Input {
var refresh: Driver<Void>
var loadMore: Driver<Void>
var itemDelete: Driver<IndexPath>
var itemSelected: Driver<MessageTableViewCellViewModel>
@ -80,6 +81,20 @@ class MessageListViewModel: ViewModel,ViewModelType {
let messagesRelay = BehaviorRelay<[MessageSection]>(value: [])
let refreshAction = BehaviorRelay<MJRefreshAction>(value: .none)
func messagesToMessageSection(messages:[Message]) -> [MessageSection] {
let cellViewModels = messages.map({ (message) -> MessageTableViewCellViewModel in
return MessageTableViewCellViewModel(message: message)
})
return [MessageSection(header: "model", messages: cellViewModels)]
}
input.refresh.drive(onNext: {[weak self] in
guard let strongSelf = self else { return }
strongSelf.page = 0
messagesRelay.accept(messagesToMessageSection(messages: strongSelf.getNextPage()))
refreshAction.accept(.endRefresh)
}).disposed(by: rx.disposeBag)
Observable<Void>.just(())
.concat(input.loadMore)
.subscribe(onNext: {[weak self] in
@ -151,12 +166,7 @@ class MessageListViewModel: ViewModel,ViewModelType {
}
strongSelf.page = 0
let messages = strongSelf.getNextPage()
let cellViewModels = messages.map({ (message) -> MessageTableViewCellViewModel in
return MessageTableViewCellViewModel(message: message)
})
messagesRelay.accept([MessageSection(header: "model", messages: cellViewModels)])
messagesRelay.accept(messagesToMessageSection(messages: strongSelf.getNextPage()))
}).disposed(by: rx.disposeBag)