我需要将服务器(网址)中的图片加载到UITableView
。所以我累了下面的代码,但没有用。
UIImageView *img=[[UIImageView alloc]init];
img.frame=fr;
img.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:countimg]]];
[cell.contentView addSubview:img];
这里的countimg是NSMutableArray。 countimg包含要加载的所有图像的URL。但它不起作用,因为它不是一个字符串变量。我不知道如何将NSMutuableArray
更改为String。
任何人都会帮助我。
答案 0 :(得分:2)
您可以从countimg数组中获取字符串网址,
[countimg objectAtIndex:index];
其中index是范围为> = 0&&的整数。 < [countimg count]
现在,如果您在UITableView
委托中使用countimg数组,那么您已将indexPath.row
替换为索引变量。
所以现在你的代码看起来像这样,
UIImageView *img=[[UIImageView alloc]init];
img.frame=fr;
img.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[countimg objectAtIndex:indexPath.row]]]]; //note this
[cell.contentView addSubview:img];
更新:
作为@DavidAtkinson建议,您不应使用dataWithContentsOfURL
方法加载NSURL
来下载图像。由于它在主线程中执行并且将停留UI直到下载无法完成。它更适合在后台加载图像。
此外,还有一些异步UIImageView
可用,我使用的是SDWebImage。
答案 1 :(得分:1)
使用SDWebImage
从服务器加载图片。在这里使用此库,您可以将占位符图像放在tableview单元格的图像视图中,直到加载图像。您甚至可以通过单行代码缓存图像
[UIImageView setImageWithUrl:[pass your URL here] placeholderImage:[pass name of placeholder image] options:SDWebImageRefreshCached]
答案 2 :(得分:0)
如果您尝试将图像从URL加载到tableview中,Github的SDWebImage代码不会指定如何执行此操作。您必须在索引处创建对象,然后从文件中加载对象的键名称正在解析。这将要求您更改SDWebImage代码,以便不是直接从特定的URL解析,而是从 一个对象键名,包含来自json或xml文件的图像URL。
以下是从json中的对象键加载图像的示例代码:
NSURL* url = [NSURL URLWithString:[dictionaryObject valueForKey:@"yourfile"]];
NSData *data = [NSData dataWithContentsOfURL:url];
dispatch_sync(dispatch_get_main_queue(), ^{
UIImageView *imgViewThumb=[[UIImageView alloc]initWithFrame:imgView.frame];
[imgViewThumb setImage:[UIImage imageWithData:data]];
[cell addSubview:imgViewThumb];