2015-03-04 3 views
0

Я загружаю табличное изображение с изображениями. Они загружаются асинхронно. Изображения отображаются только в том случае, если я просматриваю таблицу.TableView Изображения отображаются только при прокрутке вниз

Я знаю, что это происходит из-за многоразовых ячеек внутри таблицы. Мой код выглядит следующим образом.

Как я могу предотвратить это.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    MyCell *c = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 

    if (c == nil) 

    { 

     c = [[MyCell alloc] initWithStyle:UITableViewCellStyleSubtitle 

             reuseIdentifier:@"cell"]; 

    } 



    NSURL *url = [NSURL URLWithString:@"http://www.ss.com/my.png"]; 

    NSURLRequest *r = [NSURLRequest requestWithURL:url]; 

    [c.myImageView setImageWithURLRequest:r placeholderImage:[UIImage imageNamed:@"def.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 

     if (c) 

     { 

      c. myImageView.image = image; 

      [c setNeedsLayout]; 

     } 

    } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) { 

     NSLog(@"Error: %@", error); 

    }]; 
+0

r u используя ** AFNETWORKING **, а также для показа изображения (setImageWithURLRequest) –

+0

Да, я использую AFNetworking. Какое обходное решение с «SDWebimage» – Illep

ответ

1

В этом случае используйте ленивую технику загрузки. Как будто мы должны показывать изображения в виде таблицы, ленивая загрузка - лучшая техника. вот библиотека https://github.com/rs/SDWebImage Просто добавьте папку SDWebImage в свой проект. Затем в классе импорте следующих

#import "UIImageView+WebCache.h" 

и метод cellforRowIndex написать следующий код

NSURL *url = [NSURL URLWithString:@"http://www.ss.com/my.png"]; 
[c.myImageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"def.png"]]; 

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

+0

Оно по-прежнему не загружает или не отображает изображение по умолчанию. Только когда я прокручиваю его, появляется. – Illep

+0

Подождите некоторое время. и он появится –

+0

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

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