当前位置:  开发笔记 > 运维 > 正文

一旦数据可用,重绘UITableViewCell的有效方法

如何解决《一旦数据可用,重绘UITableViewCell的有效方法》经验,为你挑选了1个好方法。

我目前有一个UITableViewController,其中包含许多包含简单数据的单元格.当UITableViewController实例化UITableViewCell时,它开始为每个单独的单元格运行后台线程,以从服务器获取其状态.UITableViewCell是子类,并且已经有一个UIImageView属性,一旦来自服务器的数据准备就绪,需要将其添加到contentView.

我的问题是我每次从后台线程获取新数据时都需要调用[tableView reloadData].这有点矫枉过正,因为我可以直接通过访问受影响的单元格将UIImageView添加到contentView.当我的数据管理实用程序完成其工作(与服务器通信)时,我只是不确定找到单元的最佳方法.

在调用我的数据管理器运行其后台任务然后在任务完成时传回indexPath后,执行诸如传递单元的indexPath之类的操作是否有意义?那有点矫枉过正吗?

您最喜欢处理这项常见任务的方式是什么?

谢谢SO工作人员.



1> Heat Miser..:

在数据需要在单元格内部更改的情况下,我不使用dequeueReusableCellWithIdentifier:(NSString*)标识符方法.这会阻止UITableView缓存单元格.当表格视图单元格从屏幕滚动时,它们将被释放.有一个委托方法,

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

在你的单元格被绘制之前被调用.您可以使用它,是的将indexPath传递给管理器.

当您的数据恢复时,我通常会调用该方法

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

获取单元格,然后在单元格中设置文本并调用其UIView超类方法, - (void)setNeedsLayout.
这将告诉单元格重绘.

我做的另一种方法是使用自定义单元格,并让该自定义单元子类在绘制时直接调用管理器的数据.当数据返回时,它会调用自身的自定义委托方法来更新其内部UILabel对象,然后调用setNeedsLayout.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有