Первоначально вы можете установить для всех ячеек изображение по умолчанию. Затем вы можете использовать делегат обратного вызова для обновления требуемой ячейки, чтобы иметь изображение после его загрузки. В настоящее время я использую JMImageCache для моей удаленной обработки изображений, что делает это очень простым.
Сначала добавьте файлы JMImageCache.h и JMImageCache.m в ваш проект. Предполагая, что вы используете пользовательскую ячейку для вашей таблицы под названием CustomCell, которая содержит изображение в ImageViewer с именем imageViewer, импортируйте файл JMImageCache.h в CustomCell.h. Обновление интерфейса CustomCell, чтобы сделать его JMImageCacheDelegate, а также добавить IMAGE_URL поле NSString:
@interface CustomCell : UITableViewCell <JMImageCacheDelegate>
{
NSString *image_url;
...
}
// Also set image_url property fields so that it can be accessed from other files
Затем нам нужно обрабатывать, когда изображение завершения загрузки, так что изображение ячейки будет обновляться. Синтезируйте image_url и добавьте следующее в CustomCell.m.
- (void) cache:(JMImageCache *)c didDownloadImage:(UIImage *)i forURL:(NSString *)url
{
if ([url isEqualToString:image_url]) {
[self.imageViewer setImage:i];
[self setNeedsLayout];
}
}
Затем в файл, который имеет свой Tableview в ячейке для строки в функции индекса пути:
CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (CustomCell *)currentObject;
break;
}
}
}
[cell.imageViewer setImage:[UIImage imageNamed:"default.png"]];
//Code for getting string of URL you want for current cell called 'cell_image'
[cell setImage_url:cell_image];
[cell.imageViewer setImage:[[JMImageCache sharedCache] imageForURL:image_url delegate:cell]];
JMImageCache имеет простой пример на GitHub, если вам нужна дополнительная помощь.
Почему бы не просто добавить изображение по умолчанию, а затем, когда загрузите другое изображение, нарисуйте его сверху? – ader