TableView中的UIImageview

时间:2013-03-14 05:07:19

标签: iphone ios5 uitableview ios6

我必须在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;
}

请帮助。 在此先感谢。

4 个答案:

答案 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。