UITableView 异步加载图片

- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath {

  [NSThread detachNewThreadSelector:@selector(startImageread:) toTarget:self withObject:indexPath];

}
startImageread是获取照片的方法,我是从本地读取的



-(void)startImageread:(NSIndexPath *)indexPath
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    
    NSInteger row = [indexPath row];
    NSDictionary *imageNameDictionary = [self.DataArray objectAtIndex:[DataArray count]-row-1];
    
    NSString *readImageaname=[imageNameDictionary objectForKey:@"objectTimedata"];
    //NSLog(@"SaveData%@",imageNameDictionary);
    //NSLog(readImageaname);
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    if (!documentsDirectory) {
        NSLog(@"Documents directory not found!");
    }
    
    
    NSString *Data2File = [documentsDirectory stringByAppendingPathComponent:readImageaname];

    UIImage *newimage=[UIImage imageWithContentsOfFile:Data2File];//读取的图片
    //UIImage *newimage=[[UIImage alloc] initWithContentsOfFile:Data2File];
    //printf("startImageread****indexPath:%d\r\n",row);
    NSDictionary *cellimage = [NSDictionary dictionaryWithObjectsAndKeys:
    
                                   indexPath, @"indexPathdtat", 
                                   newimage,@"image",
                                   nil];
    //[NSThread sleepForTimeInterval:3];//不能让线程睡否则太慢了
    
    [self performSelectorOnMainThread:@selector(_setOCellImage:) withObject:cellimage waitUntilDone:YES];
    [pool release];
}
_setOCellImage是缓存刷新cell的图像
这里需要传递两个参数一个是indexPath 一个是图片newimage但是performSelectorOnMainThread只能带一个参数
这个问题困扰我半天,于是我把indexPath和newimage放到一个数组NSDictionary *cellimage传过来的

-(void)_setOCellImage:( id )celldata
{
    UIImage *newimage=[celldata objectForKey:@"image"];//从参数celldata里面拿出来图片
       [self.DataTable cellForRowAtIndexPath:[celldata objectForKey:@"indexPathdtat"]].imageView.image=newimage;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值