MKNetworkKit - 显示缓存图片

问题描述:

UPDATE AT BOTTOMMKNetworkKit - 显示缓存图片

我分出了MKNetworkKit的Flickr演示这个的。我想在一个表格中显示一个网络服务器上的几个图像。我有一个UITableViewCell子类,ImageCell。

这里是获取远程图像的定制方法:

-(void)setImageForCell:(NSString *)remoteFileName { 

    self.loadingImageURLString = 
    [NSString stringWithFormat:@"http://myserver.com/%@.png",remoteFileName]; 
    self.imageLoadingOperation = [ApplicationDelegate.imageDownloader imageAtURL:[NSURL URLWithString:self.loadingImageURLString] 
          onCompletion:^(UIImage *fetchedImage, NSURL *url, BOOL isInCache) { 

           if([self.loadingImageURLString isEqualToString:[url absoluteString]]) { 

            if (isInCache) { 
             self.imageView.image = fetchedImage; 
             [self.contentView drawRect:self.contentView.frame]; 
             NSLog(@"Image is in cache"); 
            } else { 
             self.imageView.image = fetchedImage; 
             [self.contentView drawRect:self.contentView.frame]; 
             NSLog(@"Image is not in cache"); 
            } 
           } 
          }]; 
} 
    //TableView.h 
    //it is called like this 
    //in cellForRowAtIndexPath... 
    ImageCell *cell = (ImageCell *)[tableView dequeue...etc]; 
MyObject *obj = [dataSource objectAtIndex:indexPath.row]; 
cell.textLabel.text = obj.name; 
[cell setImageForCell:obj.name]; 
return cell; 

我已经检查了我的默认缓存目录的内容,现在里面有物品。不断滚动表格现在打印出“图像在缓存中”。问题是,单元格的imageView从不更新。 Mugunth有一个类方法自动通知ObserversForKey:但我从来没有看到它在任何地方实现。我猜测还有一个步骤是告诉tableView实例用新内容更新该行。

感谢您的输入。

UPDATE

我得到这个通过使用自定义界面生成器XIB文件与小区和一个UIImageView IBOutlet中工作。不知道为什么它不能与self.imageView.image一起工作,并且很想知道原因。我仍然认为这是一个开放的问题,因为我想使用标准的UITableViewCell类。

我调用prepareForReuse。你是否将self.imageView.image设置为零? 如果是的话,不要这样做,因为它看起来像它从来没有重新初始化。

为什么你从你的代码中调用“的drawRect”。这是*! 检查您的imageView并检查IB连接是否良好。

+0

没有为ImageView的属性没有IBOutlet中,因为我工作过的非接口生成器类的。 (unsubclassed UITableViewCell)。我在第一次不工作之后添加了drawRect:in,因为我不得不更新contentView的那部分内容。 – Justin 2012-08-13 02:40:29

+0

如果是这种情况,请检查将图像添加到contentView的代码。我猜想在方法范围结束后,imageView会被取消分配。 – Mugunth 2012-08-13 02:43:16