【发布时间】:2019-04-30 06:46:45
【问题描述】:
在我的移动应用程序中,我想通过拉取刷新请求来更新 tableView 数据源,但我不知道如何在 tableview 数据源顶部插入新项目。
我看到有一个 insertRows 的方法,例如:self.tableView?.insertRows(at: [indexPath], with: .top) 但是如何根据我的方法在此处添加 newItems?
我有一个名为 initializedTableView() 的函数,它使用 PublishSubject 可观察项初始化 tableView。
func initializeTableView() {
viewModel
.items
.subscribe(onNext: { items in
self.tableView?.delegate = nil
self.tableView?.dataSource = nil
Observable.just(items)
.bind(to:(self.tableView?.rx.items(cellIdentifier:
itemCell.Identifier, cellType: itemCell.self))!) {
(index, element, cell) in
cell.itemModel = element
}.disposed(by: self.disposeBag)
})
.disposed(by: disposeBag)
}
一旦用户请求拉动刷新,就会调用此函数:
func refreshTableView() {
// get new items
viewModel
.newItems
.subscribe(onNext: { newItems in
//new
let new = newItems.filter({ item in
// items.new == true
})
//old
var old = newItems.filter({ item -> Bool in
// items.new == false
})
new.forEach({item in
// how to update tableView.rx.datasource here???
})
}).disposed(by: disposeBag)
}
【问题讨论】:
-
你试过
RxTableViewSectionedAnimatedDataSource吗? -
不,但我目前正在调查。关于如何开始的任何建议?我需要更改 initializedTableView() 的整个逻辑吗?
标签: ios swift tableview datasource rx-swift