寻找tableView的反面:willDisplayCell:forRowAtIndexPath:检测单元格何时“un”-display

时间:2011-07-24 19:23:44

标签: objective-c cocoa-touch

有没有办法检测表格视图单元格何时离开屏幕? tableView:willDisplayCell:forRowAtIndexPath:的反义词,就像tableView:willHideCell:forRowAtIndexPath:会很棒,但显然它不存在。

我想要检测到这一点的原因是因为无论何时显示新单元格,我都会下载图像以放置在该单元格中,但如果用户只是按单元格滚动而不是查看它,我希望取消这些图像的下载。

4 个答案:

答案 0 :(得分:1)

从桌面视图中取消单元格后,只需执行此操作即可。 一旦细胞弹出屏幕,它就会被重复使用。

答案 1 :(得分:1)

在大多数情况下,您不需要这样,因为表格视图通常总是显示相同数量的单元格,因此屏幕外的单元格将立即重复使用,在这种情况下,最简单的方法是取消将单元格出列后的下载。

如果你有很多不同的小区标识符,可能情况并非如此。我能想到的一种方法是覆盖willMoveToSuperview:子类中的UITableViewCell并检查superview参数是否为nil(这意味着它已从视图层次结构中删除)。

答案 2 :(得分:0)

不完全符合您的要求,但如果您查看Apple的LazyTableImages示例,他们会延迟开始下载图片,直到滚动结束:

if (self.tableView.dragging == NO && self.tableView.decelerating == NO)
{
    [self startIconDownload:appRecord forIndexPath:indexPath];
}

答案 3 :(得分:0)