代码之家  ›  专栏  ›  技术社区  ›  Joseph Tura

uiTableView的indexPathsForVisibleRows是否返回错误的路径?

  •  2
  • Joseph Tura  · 技术社区  · 14 年前

    我使用以下代码触发可见单元格/路径中的图像下载:

    - (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];
    }
    

    但是,显然返回的索引路径并不反映屏幕上的实际行。

    尤其是如果我快速滚动,返回的行将是已经脱离屏幕的行。

    有人能想出一个好的(可能是显而易见的)理由为什么会是这样吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Bill Garrison    14 年前

    是否在其他任何地方调用了-loadImagesforonScreenRows?

    看起来您是从LazytableImages示例代码开始的。我只能在滚动结束时(或在拖动结束时)调用示例项目-loadImagesforOnScreenRows。

    在该项目中,快速滚动是不相关的,因为直到滚动停止,才要求显示行。

    我只在模拟器上尝试了LazytableImages代码,而不是设备。YMMV。