0

我已经创建了自定义tableView并在其他类中使用自定义tableView类来显示tableView..

我正在从服务器加载图像并将其显示在tableViewRow..每个image都不同..

在屏幕上只有 10 个图像中的 7 个会出现,当我向下滚动时,前 3 个图像会重复一段时间,当这些图像加载时,它会显示正确的图像.. 但最初直到新图像出现,它会显示旧图像,我想要放置一个活动指示器来显示图像正在加载而不是旧图像..

我想添加activity Indicator,image直到image加载..

我的代码是...

self.tableViewX = tableView;
static NSString *simpleTableIdentifier = @"SimpleTableCell";
SimpleTableCell *cell = (SimpleTableCell *)[tableView1 dequeueReusableCellWithIdentifier:simpleTableIdentifier];
 if (cell == nil)
{
    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
    cell = [nib objectAtIndex:0];
}
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^
    {
NSString *imageURL = [NSString stringWithFormat: @"www.xyz.image.png"];
cell.thumbnailImageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]]];
 });

请帮助我提供一些示例代码..

4

1 回答 1

4

您可以使用“AsyncImageView”类文件,它将同步加载图像并在图像加载时显示活动指示器

您可以从以下链接下载“AsyncImageView”类文件:- https://www.dropbox.com/s/peazwjvky9fsjd7/Archive.zip

在 .m 文件中导入 AsyncImageView 类

 #import "AsyncImageView.h" 

在 indexpath 方法的 tableview 单元格中

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *simpleTableIdentifier = @"SimpleTableCell";
     SimpleTableCell *cell = (SimpleTableCell *)[tableView1 dequeueReusableCellWithIdentifier:simpleTableIdentifier];
     if (cell == nil)
     {
           NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleTableCell" owner:self options:nil];
      cell = [nib objectAtIndex:0];
     }
     NSString *imageURL = [NSString stringWithFormat: @"www.xyz.image.png"];
     AsyncImageView *async = [[AsyncImageView alloc]initWithFrame:CGRectMake(0, 0, width, height)];
     [async loadImageFromURL:[NSURL URLWithString:imageURL]];
     [cell.thumbnailImageView addSubview:async];
}

试试这个你的问题会解决的。

于 2013-03-11T04:39:32.657 回答