2016-06-18 2 views
0

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

Это код, который я использую для отображения изображения to tableviewcell:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("ContentCell", forIndexPath: indexPath) 

    let contentCell = cell as! ContentCell 

    contentCell.thumbnail.kf_setImageWithURL(self.contentArray[indexPath.row].thumbnailUrl) 
    print("row: \(indexPath.row)") 


    return contentCell 
} 

То, что я получаю, - это все изображение, загруженное сразу. Я знаю это, потому что, когда я прокручиваю вниз, я обнаруживаю, что все изображения мгновенно отображаются без задержек, даже несмотря на то, что мой метод журналирования print() печатает только строку видимой ячейки.

Я осуществляю это неправильно?

+1

Вы говорите асинхронного Изображение загрузки –

+0

Вы можете разработать свой вопрос? – samitarmum

+1

1. Загрузите изображение и сохраните его в локальной базе данных, затем вызовите путь. 2. Методы загрузки изображений Asynchronou, используемые для загрузки изображения при прокрутке таблицы. 3. Загрузите изображение, сохраните его в данных и присвоив массиву, после этого вызовите массив, чтобы показать изображение. –

ответ

0

вы добьетесь с помощью асинхронной загрузки изображения

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

cell.poster.image = nil; // or cell.poster.image = [UIImage imageNamed:@"placeholder.png"]; 

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://myurl.com/%@.jpg", self.myJson[indexPath.row][@"movieId"]]]; 

NSURLSessionTask *task = [[NSURLSession sharedSession] dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 
    if (data) { 
     UIImage *image = [UIImage imageWithData:data]; 
     if (image) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       MyCell *updateCell = (id)[tableView cellForRowAtIndexPath:indexPath]; 
       if (updateCell) 
        updateCell.poster.image = image; 
      }); 
     } 
    } 
}]; 
[task resume]; 

return cell; 

}