UITableView NSThread 实现动态加载图片

来源:互联网 发布:hbase数据库设计例子 编辑:程序博客网 时间:2024/05/22 12:53

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

<span style="font-size:10px;">- (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; }</span>


0 0
原创粉丝点击