1

我必须在 tableview 中显示图像,我得到了所有图像但它不显示。这里 Array 包含 3 个图像,这些图像来自服务器。当索引路径中的行单元格调用时,它仅显示第三张图像,即最后一张图像,第一行和第二行将是空白的,但是当它从下到上滚动我的表格视图时,只显示第一张和第二张图像。

-

 (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;
}

请帮忙。提前致谢。

4

4 回答 4

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 加载和缓存图像,因为它提供对底层加载和缓存类的直接访问。

于 2013-03-14T05:15:38.853 回答
2

请更改您的代码 -

[[AsyncImageLoader sharedLoader]cancelLoadingURL:self.imageicon.imageURL];

于 2013-03-14T05:29:34.447 回答
1

您创建对象 AsyncImageView 而不是 UIImageView

于 2013-03-14T07:39:41.740 回答
0

获取图像后,您是刷新图像视图还是重新加载表格行?

还要确保在主线程中刷新 UI。

于 2013-03-14T05:14:16.477 回答