2013-08-07 1 views
3

У меня есть очень серьезная проблема с прокруткой таблицы.Прокрутка не является правильной Когда я использовал SDWebImage

Первоначально я использовал GCD для загрузки изображения в фоновом режиме и настройке на ячейку таблицы. , но таблица не прокручивалась плавно. Так что я использовал SDWebImage для этого, но потом то же самое происходит.

Может ли кто-нибудь сообщить мне причину этого. Почему таблица прокрутки не является гладкой, как ожидалось.

Пожалуйста, дайте мне знать ваши взгляды, поскольку мое приложение ожидает его выпуска только для этой же цели.

Код:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

      NSString *CellIdentifier = @"Cell"; 
     customCellForExhibitor *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

     if (cell == nil) 
     { 
      NSArray *xibPath = [[NSBundle mainBundle]loadNibNamed:@"customCellForExhibitor" owner:self options:nil]; 
      for (id fileObject in xibPath) 
      { 
       cell = (customCellForExhibitor*)fileObject; 
      } 
     } 

     objDataModel = [parserDataContentArray objectAtIndex:indexPath.section]; 

     cell.exhibitorNameLabel.text = [objDataModel exhibitorNameObjectClass]; 
     cell.exhibitorText.text = [objDataModel exhibitorOfferObjectClass]; 
     cell.exhibitorSponsorType.text = [objDataModel exhibitorSponsorTypeObjectClass]; 

     [cell.exhibitorSponsorType setTextAlignment:NSTextAlignmentRight]; 



//  #pragma mark GCD; 
//  
//  NSString *ImageURL = [[parserDataContentArray objectAtIndex:indexPath.section] exhibitorImageObjectClass]; 
////  NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ImageURL]]; 
////  cell.exhibitorImage.image = [UIImage imageWithData:imageData]; 
// 
//  dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
//  //this will start the image loading in bg 
//  dispatch_async(concurrentQueue, ^{ 
//  NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ImageURL]]; 
//   
//  //this will set the image when loading is finished 
//  dispatch_async(dispatch_get_main_queue(), ^{ 
//    
//   cell.exhibitorImage.image = [UIImage imageWithData:imageData]; 
//   [cell setNeedsDisplay]; 
// 
//             }); 
//          }); 

    NSString *ImageURL = [[parserDataContentArray objectAtIndex:indexPath.section] exhibitorImageObjectClass]; 
    [cell.exhibitorImage setImageWithURL:[NSURL URLWithString:ImageURL] 
         placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 



     if ([cell.exhibitorSponsorType.text isEqualToString:@"Gold"]) { 
      cell.exhibitorSponsorType.textColor = [UIColor colorWithRed:255/255.0 green:215/255.0 blue:0 alpha:1]; 

     } 

     else if ([cell.exhibitorSponsorType.text isEqualToString:@"Silver"]){ 
      cell.exhibitorSponsorType.textColor = [UIColor colorWithRed:192/255.0 green:192/255.0 blue:192/255.0 alpha:1]; 
     } 
     else cell.exhibitorSponsorType.textColor = [UIColor colorWithRed:229/255.0 green:228/255.0 blue:226/255.0 alpha:1]; 

     return cell; 



} 

Спасибо С наилучшими пожеланиями.

+0

Пожалуйста, отредактируйте с помощью какого-либо кода, где вы загружаете и устанавливаете эти изображения внутри своего стола. –

+0

@LucasEduardo: Эй, пожалуйста, проверьте отредактированный вопрос. Не пропустите, чтобы увидеть часть комментариев, в которой я использовал GCD. –

+0

@LucasEduardo: Нужно ли мне использовать делегатов таблиц или любых делегатов SDWebImage? ??? –

ответ

0

Используйте ленивый файл для загрузки, а здесь ссылка может быть найдена здесь вместе с демонстрацией того, как она реализована.

https://stackoverflow.com/a/18032907/1305001

[cell addSubview:[self addViewWithURL:ImageURL NFrame:CGRectMake(0, 0, 50, 50)]]; 

добавить этот метод ниже cellForRow

-(UIView*)addViewWithURL:(NSString*)urlStr NFrame:(CGRect)rect 
{ 
    LazyLoad *lazyLoading; 

    lazyLoading = [[LazyLoad alloc] init]; 
    [lazyLoading setBackgroundColor:[UIColor grayColor]]; 
    [lazyLoading setFrame:rect]; 

    [lazyLoading loadImageFromURL:[NSURL URLWithString:urlStr]]; 
    return lazyLoading; 
} 

Set-заполнитель в методе инициализации LazyLoad.m файла в

-(id)init{ 
    if (self==[super init]) { 
     [self setImage:[UIImage imageNamed:@"placeholder.png"]]; 
    } 
    return self; 
} 

И изменить суперкласс LazyLoad.h файла, UIImageView от UIView как

@interface LazyLoad : UIImageView 
+0

Working Great !!!! Спасибо... –

Смежные вопросы