我必须在tableview中显示图像,我得到了所有图像,但它不显示。这里Array包含3个图像,这些图像来自服务器。当indexpath中的行的单元格调用它时,它仅显示第3个图像,即最后一个图像,第1行和第2行将为空白,但是当它从下到上滚动我的tableview时,只显示第1个和第2个图像。
-
(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = nil;
static NSString *CellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.selectionStyle = UITableViewCellSeparatorStyleNone;
cell.backgroundColor = [UIColor clearColor];
if (appDelegate.array_xml != (id)[NSNull null])
{
ObjMore = [appDelegate.array_xml objectAtIndex:indexPath.row];
//imageview
NSString *str_img = ObjMore.iconurl;
str_img = [str_img stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"str_img: %@", str_img);
self.imageicon = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 50, 50)];
NSURL *url = [NSURL URLWithString:str_img];
NSLog(@"url %@",url);
[[AsyncImageLoader sharedLoader]cancelLoadingURL:url];
self.imageicon.imageURL = url;
self.imageicon.userInteractionEnabled = YES;
self.imageicon.tag = indexPath.row;
self.imageicon.backgroundColor = [UIColor clearColor];
[cell.contentView addSubview:self.imageicon];
}
return cell;
}
请帮助。 在此先感谢。
答案 0 :(得分:2)
我建议您使用此AsyncImageView。我已经习惯了,它可以创造奇迹。要调用此API:
ASyncImage *img_EventImag = alloc with frame;
NSURL *url = yourPhotoPath;
[img_EventImage loadImageFromURL:photoPath];
[self.view addSubView:img_EventImage]; // In your case you'll add in your TableViewCell.
与使用UIImageView相同。简单,它可以为您完成大部分工作。 AsyncImageView包含UIImageView上的一个简单类别,用于在iOS上异步加载和显示图像,以便它们不会锁定UI,以及用于更高级功能的UIImageView子类。 AsyncImageView适用于URL,因此可以与本地或远程文件一起使用。
加载/下载的图像缓存在内存中,并在发生内存警告时自动清除。 AsyncImageView独立于UIImage缓存运行,但默认情况下,位于应用程序包根目录中的任何图像都将存储在UIImage缓存中,从而避免重复缓存图像。
该库还可以独立于UIImageView加载和缓存图像,因为它提供了对底层加载和缓存类的直接访问。
答案 1 :(得分:2)
请更改您的代码 -
[[AsyncImageLoader sharedLoader] cancelLoadingURL:self.imageicon.imageURL];
答案 2 :(得分:1)
您创建对象AsyncImageView而不是UIImageView
答案 3 :(得分:0)
获取图像后,您是刷新图像视图还是重新加载表格行?
还要确保在主线程中刷新UI。