IOS:来自 Json 的 LazyLoad 图像
Posted
技术标签:
【中文标题】IOS:来自 Json 的 LazyLoad 图像【英文标题】:IOS: LazyLoad image From Json 【发布时间】:2012-10-11 03:32:05 【问题描述】:我是这种编程语言的新手...我尝试从一些服务器使用 json,成功后使用所有信息,现在我无法在 tableviewcell 中显示“lazyload”图像
我使用AsyncImageView 来实现它,这里是我的代码
-(UITableViewCell *)tableView :(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
NetraCell *cell =(NetraCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell==nil)
cell=[[NetraCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
//common settings
cell.imageView.contentMode = UIViewContentModeScaleAspectFill;
cell.imageView.frame = CGRectMake(0.0f, 0.0f, 44.0f, 44.0f);
cell.imageView.clipsToBounds = YES;
///get url image from url
//NSString *path=[[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"image"]objectForKey:@"thumbnail"];
////convert image into NSDATA
// NSData* imageData = [NSData dataWithContentsOfURL: [NSURL URLWithString: path]];
////read NSData Image
// UIImage* image = [UIImage imageWithData: imageData];
//////set rounded imager with NetraImage
// image=[ImageManipulator makeRoundCornerImage:image : 30 : 30];
////show image into UItableviewCell
// cell.imageView.image=image;
else
//cancel loading previous image for cell
[[AsyncImageLoader sharedLoader] cancelLoadingImagesForTarget:cell.imageView];
cell.imageView.image = [UIImage imageNamed:@"Placeholder.png"];
cell.imageView.imageURL = [[[imageURLs objectAtIndex:indexPath.row]objectForKey:@"image"]objectForKey:@"thumbnail"];
NSString *price=[[[somearray objectAtIndex:indexPath.row] objectForKey:@"price"]objectForKey:@"formatted"];
///call image from JSOn
///draw to tableviewcell
if(price!=NULL)
cell.detailTextLabel.text= [[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"price"]objectForKey:@"formatted"]; //1 draw the price
//[cell release]
else
cell.detailTextLabel.text= @"Call";
//draw headline
cell.textLabel.text=[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"headline"];
///draw image
[UIApplication sharedApplication].networkActivityIndicatorVisible=NO;
return cell;
这一行是我的形象之路
//NSString *path=[[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"image"]objectForKey:@"thumbnail"];
这是将图片分配到uitableviewcell的默认方法
cell.imageView.imageURL = [imageURLs objectAtIndex:indexPath.row];
但是当我尝试这种方法时
cell.imageView.imageURL = [[[imageURLs objectAtIndex:indexPath.row]objectForKey:@"image"]objectForKey:@"thumbnail"];
它的错误,主要问题是
-
为什么会出错?那是我的远程图像路径错误吗?或者我的方法不对
需要你的帮助 :) 非常感谢
【问题讨论】:
在分配给 imageView 之前记录 url,然后在你的 PC 浏览器中检查它是否有任何图像 【参考方案1】:检查您是否在代码中为单元格图像 url 分配了适当的 imageurl,[[[imageURLs objectAtIndex:indexPath.row]objectForKey:@"image"]objectForKey:@"thumbnail"],然后通过这个,它可能对你有帮助 lazy loading of images in UITableView cell
【讨论】:
以上是关于IOS:来自 Json 的 LazyLoad 图像的主要内容,如果未能解决你的问题,请参考以下文章
javascript 函数debounce来自react-lazyload