@vldmr5150

Как добавить изображение по ссылке в ячейку UITableView?

Подскажите новичку в этом деле,как сделать так,чтобы в каждой ячейке таблицы было изображение,получаемое по url.Программа парсит json и получает информацию по тегам,в одном из которых - ссылка на маленькое изображение.С текстом все норм, а изображение добавить в ячейку не получается - ошибка Outlets cannot be connected to repeating content.
  • Вопрос задан
  • 1635 просмотров
Пригласить эксперта
Ответы на вопрос 3
Flanker_4
@Flanker_4
Не делайте так, как советует Максим Пригоженков
метод dataWithContentsOfURL не предназначен для этого. А в документации Apple (видать достали) прям подчеркивает, что метод не для сетевых запросов.
Просто используйте готовое решение SDWebImage.
P.S. Если вопрос был "понять как это сделать самому" , то просто поищите в интернете UIImage async load
Вот первое что увидел

Что касается imageView
stackoverflow.com/questions/27142581/outlets-canno...
У вас там видать нет сабкласса UITableViewCell, но при этом в xib'e /storyboard'e вы накидали вьюшки, о которых стандартный UITableViewCell ничего не знает
Ответ написан
Waka_Waka
@Waka_Waka
IOS Developer
UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"url"]]];


Ну или попроще.
NSString *address = @"url";
        NSURL *url = [NSURL URLWithString:address];
        NSData *dataImage = [NSData dataWithContentsOfURL:url];
        UIImage *img = [UIImage imageWithData:dataImage];


В ячейке:
cell.imageObject.image = img;

А вообще посмотри, все ли у тебя в проядке с привязкой элементов из сториборда с кодом. Бывает, что не уберешь связь, она и крэшит приложение.
Ответ написан
@Petr2008
Не согласен с г-ном Ан, для макета годится, главное не грузить в отрисовки ячейки, а предварительно.
Как я бы сделал.
1. Обработка контента.
1.1 Собираем данные для ячейки в словарь cellContent (NSMutableDictionary). Вместо картинки пустышку (у меня маленькая картинка с часами). Примем , что картинка есть в КАЖДОЙ ячейке.
1.2 Добавляем cellContent в tableList (NSMutableArray)
Добавляем urlName в urlList (NSMutableArray)
2. Перегружаем данные таблицы.
[self.tableView reloadData];
не забываем в делегате указать:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return tableList.count; }
3. Загружаем картинки используя NSURLSession, но только через блок.
3.1 счетчик = tableList.count
3.2 for (int i = 1; i < tableList.count; i++) {
3.3 загрузить картинку:^
загрузилась картинка уменьшили счетчик--, не 0 запустили 3.3
перегрузили ячейку с номером i
}

Извиняюсь за смесь французского с нижегородским.
Есть нюансы, небольшие картинки 5-30Kb можно грузить в 3-5 потоков, но не больше. Большие картинки грузим цепочкой одну за другой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы