2012-07-01 3 views
1

в UITableView, в котором есть несколько ячеек, и каждая ячейка имеет UIImage, и я буду обновлять асинхронный UIImage для производительности. но возникает вопрос, как я могу перезагрузить UIImageView в ячейке, когда изображение вытащили из Интернета.Как асинхронно перезагружать UIImage в одной ячейке/строке UITableView?

i kown может перезагрузить всю ячейку с помощью методу «reloadRowsAtIndexPaths», но я просто хочу, чтобы у него был способ, который может только перезагрузить объект UIView, который необходимо перезагрузить (то есть изображение или метку) в клетка.

BTW, я нашел методу «reloadRowsAtIndexPaths» будет выполнять метод «heightForRowAtIndexPath» для всех ячеек, когда я просто перезаряжаю одну ячейку. что-то не так?

ответ

0

Возможно, образец кода LazyTableImages из яблока - это то, что вы хотите.

+0

спасибо. это то, что я хочу. – rotyger

+0

BTW, я нашел методу «reloadRowsAtIndexPaths» будет выполнять метод «heightForRowAtIndexPath» для всех ячеек, когда я просто перезаряжаю одну ячейку. я прав? – rotyger

+0

@rotyger Вы можете проверить это, установив точку останова в методе. –

0

Получите ссылку на свой заказ сотовой ячейки tableView:cellForRowAtIndexPath:. Затем обновите его свойство изображения работает следующим образом:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ 
    NSData *imageData = [NSData dataWithContentsOfURL:someURL]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     cell.someImage = [UIImage imageWithData:imageData]; 
    }); 
}); 

Вы будете нагружать не более 6 изображений одновременно, потому что это предел NSURLConnection.