我使用以下代码触发可见单元格/路径中的图像下载:
- (void)loadImagesForOnScreenrows {
NSArray *visiblePaths = [tableView indexPathsForVisibleRows];
for (NSIndexPath *indexPath in visiblePaths) {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if([cell viewWithTag:kTagImageView] != nil) {
(ImageViewCached *)[[cell viewWithTag:kTagImageView] triggerDownload];
}
}
}
// Load images for all onscreen rows when scrolling is finished
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate)
{
[self loadImagesForOnscreenRows];
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[self loadImagesForOnscreenRows];
}
但是,显然返回的indexPaths并不反映实际的屏幕行。
特别是如果我快速滚动,返回的行将是已经屏幕外的行。
有人会想到一个好的(可能是显而易见的)理由,为什么会出现这种情况?
答案 0 :(得分:1)
是否在其他地方调用了-loadImagesForOnscreenRows?
看起来你是从LazyTableImages示例代码开始的。我只能在滚动结束时(或拖动结束时)调用-loadImagesForOnscreenRows示例项目。
快速滚动在该项目中无关紧要,因为在滚动停止之前不会询问可见行。
我只在模拟器上尝试了LazyTableImages代码,而不是设备。 YMMV。