很长一段时间以来,我一直在委托方法- tableView:cellForRowAtIndexPath:
中使用表格视图单元格绑定数据。
但最近,我读了一篇关于如何获得更好表现的博客。它告诉我们,我们应该将数据与另一个委托方法- tableView:willDisplayCell:forRowAtIndexPath:
中的表格视图单元格绑定,因为单元格不会显示在- tableView:cellForRowAtIndexPath:
中。
我在我的个人项目中尝试过,但看起来很奇怪。一些细胞重叠。
在我的项目之前,我使用Masonry来布局单元格的子视图。在将数据与- tableView:cellForRowAtIndexPath:
中的表格视图单元格绑定后,我调用了[cell setNeedsLayout]
和[cell layoutIfNeeded]
。
我开始思考,这是绑定数据的更好方法吗?或者,我应该如何修改我的代码以最低的成本(修改时间)获得这样的性能。
答案 0 :(得分:0)
似乎正在就这个话题进行辩论。
我认为您所指的文章是is found here。它认为你应该在willDisplayCell
而不是cellForRowAtIndexPath
进行数据绑定。
但是,this article指出cellForRowAtIndexPath
和willDisplayCell
是在同一个布局周期中执行的,这意味着任何一个地方的数据绑定都会产生相同的效果。
他们都同意的事实是计算行的高度应该非常快。进行复杂的计算可能会导致性能问题。
在任何情况下,编写好的模型代码非常重要,这样您的视图控制器就可以专注于将模型连接到视图。下载要在UITableView
代码和其他网络/设备密集型进程中显示的图像通常是个坏主意,可能会导致问题。
故事的道德:尽快计算行高并编写好的模型代码,以便您的视图控制器可以减少计算量。