延迟加载 - UITableview 可见单元格不显示图像

Posted

技术标签:

【中文标题】延迟加载 - UITableview 可见单元格不显示图像【英文标题】:Lazy loading - UITableview visible cells not showing the images 【发布时间】:2012-07-30 12:30:17 【问题描述】:

我已经使用苹果的延迟加载示例在 uitableview 中实现了图像的延迟加载。除一部分外,一切正常。最初,当我启动应用程序时,表格的可见单元格不会加载任何图像。但是当我滚动表格时,图像正在为剩余的单元格加载并被保留。但最初的可见单元格保持空白。

有人遇到过类似的问题吗?

谁能指导我解决这个问题?

static NSString *EditCellIdentifier = @"EditCell";
UITableViewCell *cell = (UITableViewCell *) [tableView dequeueReusableCellWithIdentifier:EditCellIdentifier]; 
if (cell == nil) 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:EditCellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
 
for (UIView *view in cell.contentView.subviews)
    [view removeFromSuperview];
   
    if ([listItems count]>0)       
        
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    ListItem * item = [listItems objectAtIndex:indexPath.row];
    UIImageView *imageFrame = [[UIImageView alloc] initWithFrame:CGRectMake(5,5,60,60)];
    [imageFrame setImage:[UIImage imageNamed:@"box.png"]];
    UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 50, 50)];
      otherPath=indexPath;
        if (!item.appIcon)
        
            if (self.tableView.dragging == NO && self.tableView.decelerating == NO)
            
                NSLog(@"Initial Values %@",item.imageURL); 
                if([item.imageURL length]==0)
                    imageView.image=[UIImage imageNamed:[categoriesImages objectAtIndex:self.configfId - 1]];
                  
                else
                    [self startIconDownload:item forIndexPath:indexPath];
           
       
        else
        
            imageView.image = item.appIcon;
        
    [imageView setBackgroundColor:[UIColor blackColor]];       
    NSString * titleStr = [NSString stringWithFormat:@"%@. %@",item.rank,item.title];        
    NSLog(@"titleStr %@",titleStr);    
    CGSize size = [titleStr sizeWithFont:[UIFont fontWithName:@"Helvetica-Bold" size:11] constrainedToSize:CGSizeMake(12, 100) lineBreakMode:UILineBreakModeWordWrap];       
    if (size.height > 50 )             
        size = CGSizeMake(size.width,50.0 );            
            
    NSInteger height = 14;        
    if(item.title.length > 30)            
        height = 25;            
               
    [cell.contentView addSubview:imageView];        
    [cell.contentView addSubview:imageFrame];
    
return cell;              

【问题讨论】:

请将tableView:cellForRowAtIndexPath:的代码添加到您的问题中。 您的图片来源是什么,这些是本地的还是来自网络? 几乎可以肯定,您只是在重绘时才加载图像,但正如第一条评论所说,没有看到您的 cellForRowAtIndexPath 这只是一个猜测 我已经添加了我的代码.... 来源是web 【参考方案1】:

我无法在您的代码中为您提供帮助,但我建议您使用 SDWebImage 进行延迟加载。你会在这里找到它https://github.com/rs/SDWebImage/。还有一个很棒的教程,标题为“如何使用它”

【讨论】:

以上是关于延迟加载 - UITableview 可见单元格不显示图像的主要内容,如果未能解决你的问题,请参考以下文章

当单元格不可见时,UITableView indexPathForCell 返回 null

从笔尖加载的 UITableView 单元格不显示背景颜色

UITableView 的 scrollToRowAtIndexPath 在单元格不显示时不起作用?

移出可见的 uitableView 后,UITableViewCell 具有灰色背景

ios第一个单元格不是从UITableView的顶部开始

向下滚动时,UITableview 看不到最后一个单元格