下载图像后使用MVVM重新载入UITableView行

问题描述:

在应用程序中,我写了一个决定使用MVVM模式。我使用RxSwift + RxCocoa绑定ViewModels和Views。现在我面临一个问题,我自己找不到任何解决方案。下载图像后使用MVVM重新载入UITableView行

我有一个ViewModels列表,我想在UITableView中显示。在tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath)方法中,我将一个单元出队,并将列表中的一个ViewModel绑定到这个单元。 ViewModel有imageUrl变量,我使用Kingfisher下载这个图像,并将其放入该单元格中的ImageView。

所以这里是我现在的问题:当下载完成后,我必须重新加载此行,以便自动布局将计算其正确的高度。但是当我使用tableView.reloadRows(at: [indexPath], with: .none)时,绑定被重新创建并且以无限循环结束(绑定 - >图像下载完成回调 - >重载行 - >绑定 - > ...)!

任何想法如何解决这个问题?

+0

一个很好的例子,共享代码,请! –

您不需要重新加载自动布局的行来计算高度(实际上,从不这样做)。 配置你的tableview有适应高度,你就完成了。

你可以找到这对https://www.raywenderlich.com/129059/self-sizing-table-view-cells

+0

嗨。可悲的是,这不是事实。当显示图像行并显示图像时,没有任何反应。我必须将此行从屏幕上滚动并再次滚动 - 然后图像才能正确显示。 – Tiero

+0

@Tiero这是真的,我有一个庞大的项目,显示所有项目的图像,我们永远不会重新加载行。 如果图像不显示,则表示您的代码不正确。 –

+0

那么如何限制ImageView使其工作? – Tiero