UITableView NSThread 實現動態加載圖片

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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章