如何在 RxSwift 中使用 tableView 数据源(numberOfRowsInSection)?

Posted

技术标签:

【中文标题】如何在 RxSwift 中使用 tableView 数据源(numberOfRowsInSection)?【英文标题】:How to use tableView's datasource (numberOfRowsInSection) wirh RxSwift? 【发布时间】:2020-03-13 14:40:05 【问题描述】:

我在我的应用中使用 RxSwift、RxCocoa 并实现了一个 tableView。 当它从 viewModel 获取 tableView 的 priceData 时,它显示了 priceData 的完整列表。

但我想第一次只显示 50 个计数,并在滚动时显示更多。 在没有 RxSwift/RxCocoa 的情况下,我使用 numberOfRowsInSection 进行 tableView 的分页

但我不知道如何将它与 RxSwift 一起使用

这是我的代码。我应该如何处理用于制作可分页 tableView 的代码?

viewModel.priceData         
            .drive(tableView.rx.items(cellIdentifier: "Cell"))  (index: Int, list, cell: Cell) in
...
.disposed(by: disposeBag)

【问题讨论】:

我看到的最简单的方法,它只是通过诸如viewModel.loadMore() 的命令类型将数据附加到priceDataloadMore() priceData.append(... here append data after 50th index...) 并在UITableView 中的数据末尾调用此方法。但我相信可以有更聪明的方法来做到这一点。如果您需要一种快速的方法,可以选择。 是的,我认为您的建议也可以成为我的解决方案。我试图找出方法,但没有明确的答案...... 【参考方案1】:

RxDataSources 库允许您对数据进行分段。将其添加到您的项目中,您就可以使用部分了。

【讨论】:

感谢您让我知道使用 RxDataSources。所以我实现了 RxDataSources 并成功制作了 TableView。但是,我不知道如何控制 numberOfRowInSection... 库自动为您“控制”它。 你的意思是我不需要设置 NumberOfRowsInSection? 是的,我就是这个意思。 解决方案是只在源 observable 中放置 50 个项目,直到用户滚动到底部,然后发出 100 个项目......我不知道这与 numberOfRowsInSection 有什么关系.

以上是关于如何在 RxSwift 中使用 tableView 数据源(numberOfRowsInSection)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RxSwift 中将多个数据模型绑定到 TableView

RxSwift TableView - 如何设置 numberOfRowsInSection?

正确使用 RxSwift 和 TableView

RxSwift 如何知道 TableView 重新加载结束

RxSwift Observeable 不会在数据更改时更新 tableview

使用 rxSwift 中的 tableView 单元将数据从视图模型传递到视图控制器