2016-06-14 6 views
1

Я показал коллекции URLImage в ячейке tableview. Он застревает, пока я прокручиваю камеру. Я использовал третьи стороны, такие как SDWebImageManager и AFNetWorking. Тем не менее, камера застряла.Как показать URL-изображения в таблице TableView без застревания?

[imageVw setImageWithURL:[NSURL URLWithString:self.imgaeRecord.PreviewURl]placeholderImage:[UIImage imageNamed:@"default-thumbnail.jpg"]]; 

ИЛИ

NSURL *url =[NSURL URLWithString:[self.MoviesListImage objectAtIndex:indexPath.row]]; 

SDWebImageManager *manager = [SDWebImageManager sharedManager]; 
[manager downloadImageWithURL:url 
         options:0 
        progress:^(NSInteger receivedSize, NSInteger expectedSize) { 
         // progression tracking code 
        } 
        completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { 
        if (image) { 
         cell.recipeImageView.image = image; 
        } 
       }]; 
+0

Означает ли название «застревают»? И что вы имеете в виду, застряв, если это то, что вы имеете в виду? – danh

+0

Вы используете ячейку по умолчанию или пользовательскую? – tx2

+0

после завершения загрузки изображения, если это основной поток: NSThread.isMainThread(). Если не перейти к основному потоку и обновить интерфейс: dispatch_async (dispatch_get_main_queue(), {//cell.recipeImageView.image = image;}) –

ответ

1

В вашем cellForRowAtIndexPath

NSURL *url =[NSURL URLWithString:[self.MoviesListImage objectAtIndex:indexPath.row]]; 

SDWebImageManager *manager = [SDWebImageManager sharedManager]; 
[manager downloadImageWithURL:url 
        options:0 
       progress:^(NSInteger receivedSize, NSInteger expectedSize) { 
        // progression tracking code 
      } 
       completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { 
       if (image) { 
        dispatch_async(dispatch_get_main_queue(), ^{ 
        TableViewCellClass *updateCell = (id)[tableView cellForRowAtIndexPath:indexPath]; 
        if (updateCell) 
        updateCell.yourImageView.image = image; 
       }); 
      } 
     } 
}]; 
[task resume]; 
+0

спасибо. его работоспособность. – Raja

1

Попробуйте использовать SDWebImage таким образом внутри cellForRowAtIndexPath метода

NSURL *url =[NSURL URLWithString:[self.MoviesListImage objectAtIndex:indexPath.row]]; 
[cell.imageView sd_setImageWithURL:url 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"] 
       completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 
       cell.recipeImageView.image = image 
    }]; 
+0

спасибо, солнечный. Я попробую. – Raja

1

Я думаю, что ваша проблема остается с представлением tableview, когда вам нужно выполнять многие операции с изображениями. Поэтому, чтобы оптимизировать запросы, вы должны отменить запрос, который выполняется, когда ячейка покидает видимую область таблицы. Для этого в вашей пользовательской ячейке выполните метод - (void)prepareForReuse и там, предположив, что вы используете SDWebImage, сделайте [imageView sd_cancelCurrentImageLoad]. Кроме того, чтобы загрузить и назначить изображение на ImageView вам только нужно сделать

[cell.imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]] 
+0

спасибо. его работоспособность. – Raja