mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
历史消息下拉刷新
This commit is contained in:
parent
00561c0ec2
commit
91413a6032
@ -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 {
|
||||
|
||||
@ -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(),
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user