2012-09-05 57 views
-1

我想在我的表格视图中使用图片延迟加载概念。我的image rul字符串数组是(MSMutableArray)“images”。我如何在cellForRowAtIndexPath中执行此操作。图片在表格视图中的延迟加载

它看起来像:

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

    UITableViewCell *cell=[searchtable dequeueReusableCellWithIdentifier:@"cell"]; 

    if(!cell) 
    { 

     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; 



     cell.textLabel.font=[UIFont systemFontOfSize:12]; 

     cell.imageView.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[appSmallLogos objectAtIndex:indexPath.row]]]]; 

     cell.detailTextLabel.text=[appReleaseDates objectAtIndex:indexPath.row]; 


    } 

    return cell; 
} 

回答

0

试试这个代码:

UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
indicator.frame = CGRectMake(your bounds); 
[cell addSubview:indicator]; 
[indicator bringSubviewToFront:self.view]; 
[indicator startAnimating]; 


     dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); 
    dispatch_async(queue, ^{ 
    //This is what you will load lazily 
     NSString *u=[NSString stringWithContentsOfFile:r.url encoding:NSUTF8StringEncoding error:nil]; 
     NSURL *imageURL=url; 
     NSData *image=[NSData dataWithContentsOfURL:imageURL]; 
     dispatch_sync(dispatch_get_main_queue(), ^{ 
      CustomCell *cell = (CustomCell *)[tableView cellForRowAtIndexPath:indexPath]; 
      cell.imageView.image=[UIImage imageWithData:image]; 
      [cell setNeedsLayout]; 
    [indicator stopAnimating]; 

     }); 
    }); 
cell.cellDescription.text=r.url;// this is which you want to add in first time. 

我不知道,但尝试。

+0

非常感谢好友..它的工作正常。 :) – user1573162

+0

有一个快乐的编码 –

+0

可以请你告诉我,如何显示活动指标,直到图像不显示在表视图单元格? – user1573162

0

可以使用SDWebImage库,该库将下载并缓存异步形象。通过网址传递给它作为参数

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *MyIdentifier = @"MyIdentifier"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 

    if (cell == nil) 
    { 
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
             reuseIdentifier:MyIdentifier] autorelease]; 
    } 

    // Here we use the new provided setImageWithURL: method to load the web image 
    [cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] 
        placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

    cell.textLabel.text = @"My Text"; 
    return cell; 
} 
+0

[cell.imageView setImageWithURL:[NSURL URLWithString:@“HTTP:// WWW “.domain.com/path/to/image.jpg”] placeholderImage:[UIImage imageNamed:@“placeholder.png”]];此行显示setImageWithUrl和占位符图像的错误。 – user1573162

+0

请确保您正确添加了库到您的项目中,并且不要忘记'#import'UIImageView + WebCache.h''您想要显示图像的位置。 – janusbalatbat

+0

导入时显示错误。文件存在的地方? – user1573162

0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    TableCellLayout *cell = (TableCellLayout *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if(cell == nil) 
    { 
     cell = [[TableCellLayout alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    cell.cellName = [[array valueForKey:@"name"] objectAtIndex:indexPath.row]; 
    cell.cellImage = [UIImage imageNamed:@"placeholder.png"]; // add a placeholder  

    NSString *imageURL = [[array valueForKey:@"imageLink"] objectAtIndex:indexPath.row]; 
    NSURL *theURL = [NSURL URLWithString:imageURL]; 

    if (asynchronousImageLoader == nil){ 
     asynchronousImageLoader = [[AsynchronousImages alloc] init]; 
    } 
    [asynchronousImageLoader loadImageFromURL:theURL]; 

    cell.cellImage = asynchronousImageLoader.image; 

return cell; 
} 

我终于成功地做到这一点设置图像用:

– performSelectorOnMainThread:withObject:waitUntilDone: 

后的图像被下载

+0

我如何使用此代码实现它? – user1573162