关闭

iPhone table 实现动态加载图片的教程

281人阅读 评论(0) 收藏 举报

from:http://www.cocoachina.com/bbs/read.php?tid=92444

iPhone在加载列表时,如果每个等待把所有列表中的数据都加载完在显示相关内容,如果列表中有一些比较大的图片,加载的时间比较长,那么给用户的效果就很差了,下面详细是一种实现动态加载图片的办法:


- (UITableViewCell *)tableView:(UITableView *)tableView 
         cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"tag"]; 
    if (cell==nil) { 
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 
                                       reuseIdentifier:@"tag"] autorelease]; 
    }    
    //表格设计 
    NSDictionary* one = [array objectAtIndex:indexPath.row]; 
    cell.textLabel.text = [one objectForKey:@"title"]; 
    cell.detailTextLabel.text = [one objectForKey:@"content"]; 
     [NSThread detachNewThreadSelector:@selector(updateImageForCellAtIndexPath:) toTarget:self withObject:indexPath]; 
    return cell; 
}
- (void)updateImageForCellAtIndexPath:(NSIndexPath *)indexPath 

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    UIImage *image = [self getImageForCellAtIndexPath:indexPath]; 
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 
    [cell.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO]; 
    [image release]; 
    [pool release]; 

-(UIImage *)getImageForCellAtIndexPath:(NSIndexPath *)indexPath 

    id path = [[array objectAtIndex:indexPath.row] objectForKey:@"image"]; 
    NSURL *url = [NSURL URLWithString:path]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    UIImage *image = [[UIImage alloc] initWithData:data cache:NO]; 
    return image
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:169648次
    • 积分:2637
    • 等级:
    • 排名:第14667名
    • 原创:19篇
    • 转载:223篇
    • 译文:0篇
    • 评论:15条
    最新评论