更新TableViewController中的UI:谁负责 - 表格还是单元格?

时间:2016-11-23 20:19:40

标签: ios swift xcode

假设我正在从服务中检索一堆数据并使用JSON解析它。

当我根据检索到的数据将单元格的UI元素设置为适当的值时,最好在表格视图中设置cellForRowAtIndexPathMethod,还是应该在我的JSON对象的didSet方法中的UITableViewCell中进行设置?

2 个答案:

答案 0 :(得分:2)

解析完JSON之后,应该在TableView上调用reloadData。

然后我认为最好的方法是在单元格中设置一个方法,允许你设置它就像让我们说的那样

setup(withUser: User) {}

并从你的cellForRowAtIndexPath方法中调用它。

答案 1 :(得分:0)

IMO没有"对"这样做的方式。

传统上,TableViewCells被认为是一个View,因此该视图的控制器tableView应该负责设置该视图的信息。这就是为什么你会看到在cellForRowAtIndexPath中设置单元格的属性。

随着时间的推移,TableViews和他们的Cell变得更加复杂。随着设备性能的提高,单元的负载变得越来越低,使得它们能够在不成为性能负担的情况下完成更多工作。这使得Cell更像是ViewController而不是View,可以管理一些自己的设置和数据跟踪。

此时我认为这取决于您喜欢什么或者您的应用程序整体遵循哪些设计决策。

个人喜欢使用cell.update(使用viewModel:viewModelType),但如果你想使用apple的默认单元格或者使用非常简单的单元格,只需在cellForRow中设置它们即可。