2017-08-29 82 views
0

在應用程序中,我寫了一個決定使用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

一個很好的例子,共享代碼,請! –

回答

0

您不需要重新加載自動佈局的行來計算高度(實際上,從不這樣做)。 配置你的tableview有適應高度,你就完成了。

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

+0

嗨。可悲的是,這不是事實。當顯示圖像行並顯示圖像時,沒有任何反應。我必須將此行從屏幕上滾動並再次滾動 - 然後圖像才能正確顯示。 – Tiero

+0

@Tiero這是真的,我有一個龐大的項目,顯示所有項目的圖像,我們永遠不會重新加載行。 如果圖像不顯示,則表示您的代碼不正確。 –

+0

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