zoukankan      html  css  js  c++  java
  • UITableView image gcd

     1 if (![[NSFileManager defaultManager] fileExistsAtPath:[path stringByAppendingPathComponent:@"image.png"]])
     2 {
     3     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,  0ul);
     4     dispatch_async(queue, ^{
     5         NSString *url=[pat stringByAppendingPathComponent:@"comments.txt"];
     6         NSString *u=[NSString stringWithContentsOfFile:url encoding:NSUTF8StringEncoding error:nil];
     7         NSURL *imageURL=[NSURL URLWithString:u];
     8         NSData *image=[NSData dataWithContentsOfURL:imageURL];
     9         [image writeToFile:[pat stringByAppendingPathComponent:@"image.png"] atomically:YES];
    10         dispatch_sync(dispatch_get_main_queue(), ^{
    11             UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
     cell.imageView.image=[UIImage imageWithContentsOfFile:[pat stringByAppendingPathComponent:@"image.png"]];
    12             cell.imageView.image=[UIImage imageWithContentsOfFile:[pat stringByAppendingPathComponent:@"image.png"]];
    13             [cell setNeedsLayout];
    14             NSLog(@"Download");
    15         });
    16     });
    17     cell.imageView.image=[UIImage imageNamed:@"placeholder"];
    18 }
    19 else
    20 {
    21     NSLog(@"cache");
    22     cell.imageView.image=[UIImage imageWithContentsOfFile:[pat stringByAppendingPathComponent:@"image.png"]];
    23 }

    Rather than capturing the cell you need to capture the index path, then get the cell back using:

    UITableViewCell*cell =[tableView cellForRowAtIndexPath:indexPath];

    That way, if the cell is now off screen you'll get nil back and the image won't be set on the wrong cell.

    The other thing you need to add after your dispatch_async() is a

    cell.imageView.image=somePlaceholderImage.

  • 相关阅读:
    2020 CCF CSP-J2(表达式)
    PSP总结报告
    第十三周例行报告
    对团队成员公开感谢博客
    作业要求 20181127-1 附加作业 软件工程原则的应用实例分析
    第十二周例行报告
    第十一周例行报告
    第十周例行报告
    第八周例行报告
    第七周例行报告
  • 原文地址:https://www.cnblogs.com/cokecoffe/p/2760820.html
Copyright © 2011-2022 走看看