如何在didSelectRowAtIndexPath中检查延迟加载imge是否完整

时间:2015-09-22 21:52:11

标签: objective-c uitableview

我使用以下行在cellForRowAtIndexPath ...自定义单元格中延迟加载我的图像。

 [cell.picImageView sd_setImageWithURL:bkgUrl placeholderImage:[UIImage imageNamed:@"holder_image_plain.png"]];
 [cell.profileImageView sd_setImageWithURL:proUrl placeholderImage:[UIImage imageNamed:@"launch_120.png"]];

// 然后,当用户在didSelectRowAt中点击自定义单元格时,检查图像是否已从占位符更改为用户图像...

if([cell.profileImageView.image isEqual:[UIImage imageNamed:@"launch_120.png"]] && [cell.profileImageView.image isEqual:[UIImage imageNamed:@"launch_120.png"]]){
    NSLog(@"NOT yet...imge dl not complete");
}else{
    NSLog(@"All clear....go to detail page");

这导致了不一致的结果。我认为这是因为显示器显示的不止一个单元格。所以我想知道我是否可以指定检查所选单元格图像是否已更改?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

通过此流程,您可以使视图负责跟踪状态。你应该让你的模型跟踪你应该/不应该进入下一页的时间。

您可以通过使用完成处理程序的方法之一来完成此操作。然后,您可以在完成处理程序中根据需要更新模型,然后您的didSelectRowAtIndexPath:将询问模型而不是视图下一步应该做什么

之前我没有使用过这个库,但是这应该会给你一些开始的东西

__weak UIImageView *weakImageView = cell.profileImageView;

[cell.profileImageView sd_setImageWithURL:proUrl 
                         placeholderImage:[UIImage imageNamed:@"launch_120.png"]
                                completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
                                  if (image) {
                                    // Update model to say that the image was downloaded

                                    weakImageView.image = image;
                                    [weakImageView setNeedsLayout];
                                  }
                                }];