0

Apple の遅延読み込みの例を使用して、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;              
}
4

1 に答える 1

0

あなたのコードであなたを助けることはできませんがSDWebImage、遅延読み込みに使用することをお勧めします。https://github.com/rs/SDWebImage/で見つけることができます。これに関しては、「How To Use It」というタイトルの優れたチュートリアルがあります。

于 2012-07-30T12:50:32.763 に答える