На iOS, как заставить cell.imageView обновить свой контент?
Я экспериментирую вtableView:cellForRowAtIndexPath
установить изображение, позвонив
[self downloadImage:urlString andSetIntoCellImageView:cell]
И вdownloadImage
позвонитNSURLConnection:sendAsynchronousRequest
(только для iOS 5 и выше), а в блоке завершения установите изображение с помощью
cell.imageView.image = [UIImage imageWithData:data]; // data is downloaded data
и это работает, если вtableView:cellForRowAtIndexPath
,imageView
заполнен фиктивным изображением-заполнителем - и мне интересно, как обновляется новое изображение,setNeedsDisplay
сделать перекрас? Но если я не установлю изображение заполнителя, то новое изображение вообще не будет отображаться. Интересно, какой механизм можно использовать, чтобы заставить его показывать изображение?
Если я использую
[cell.imageView setNeedsDisplay]
или же
[cell setNeedsDisplay];
в блоке завершения он не сработает, и если я использую
[self.table reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath]
withRowAnimation:UITableViewRowAnimationAutomatic];
в блоке завершения, сделавdownloadImage
принятьindexPath
позвонитtableView:cellForRowAtIndexPath
снова и вызвать бесконечный цикл. Похоже, мне нужно использовать некоторую хеш-таблицу, чтобы запомнить, есть ли изображение в хеш-таблице: если нет, вызовитеdownloadImage
, и если в хеш-таблице, просто используйте его, чтобы не было бесконечного цикла.
Но есть ли простой способ заставить изображение появляться? Установка изображения заполнителя работает, но что, если мы не будем - каким механизмом заполнитель вызывает обновление изображения?