比方说,我从服务中检索一堆数据并使用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中设置它们即可。