比方說,我從服務中檢索一堆數據並使用JSON解析它。在TableViewController中更新UI:誰負責 - 表或單元格?
當我根據檢索到的數據將單元格的UI元素設置爲適當的值時,最好在表格視圖cellForRowAtIndexPathMethod中設置它,還是應該在UITableViewCell中爲我的JSON對象設置didSet方法?
比方說,我從服務中檢索一堆數據並使用JSON解析它。在TableViewController中更新UI:誰負責 - 表或單元格?
當我根據檢索到的數據將單元格的UI元素設置爲適當的值時,最好在表格視圖cellForRowAtIndexPathMethod中設置它,還是應該在UITableViewCell中爲我的JSON對象設置didSet方法?
一旦你解析了JSON,你應該在你的TableView上調用reloadData。
然後,我認爲最好的辦法是在細胞的方法,允許您設置它像我們說
setup(withUser: User) {}
,並從你所說的cellForRowAtIndexPath方法。
IMO沒有一個「正確」的方式來做到這一點。
傳統上,TableViewCells被認爲是一個View,所以該視圖的控制器tableView應該負責設置該視圖的信息。這就是爲什麼你看到在cellForRowAtIndexPath中設置單元格的屬性。
隨着時間的推移,TableViews及其單元格變得越來越複雜。隨着器件性能的提高,單元的負載變得越來越低,允許它們做更多而不會成爲性能負擔。這使得單元格更像是一個ViewController而不是View,可以管理他們自己的一些設置和數據跟蹤。
在這一點上,我認爲這取決於你喜歡什麼或者你的應用程序作爲一個整體遵循什麼設計決定。個人喜歡像cell.update(with viewModel:viewModelType)的東西,但如果你想使用蘋果的默認單元格或使用非常簡單的單元格,只需在cellForRow中設置它們即可。