Я в настоящее время использую SDWebImage загружать картинки для моих ячеек таблицы, используя следующий код:IOS: SDWebImage нагрузка ячейка с неправильными изображениями
[cell.coverImage sd_setImageWithURL:[self.dataInJSONModel.Content[indexPath.row] CoverImage] placeholderImage:[UIImage imageNamed:@"imageplaceholder_general"]];
Проблема заключается в том, когда я прокрутку вверх и вниз, изображения были вставлен в неправильные ячейки. После прочтения некоторого сообщения в StackOverflow относительно этой проблемы, я подозреваю, что это связано с тем, что эти ячейки повторно используются при прокрутке и, следовательно, асинхронная загрузка изображения может быть помещена в измененный элемент cellPath.
Поэтому я реализовал несколько изменений т.д .:
SDWebImageManager *manager = [SDWebImageManager sharedManager];
UIImageView * cellCoverImage = cell.coverImage;
[manager downloadImageWithURL:[self.dataInJSONModel.Content[indexPath.row] CoverImage] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL * oriURL) {
NSArray *visibleIndexPaths = [tableView indexPathsForVisibleRows];
if ([visibleIndexPaths containsObject:indexPath]) {
cellCoverImage.image = image;
}
}];
Или даже сравнить URL-адреса:
SDWebImageManager *manager = [SDWebImageManager sharedManager];
UIImageView * cellCoverImage = cell.coverImage;
[manager downloadImageWithURL:[self.dataInJSONModel.Content[indexPath.row] CoverImage] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL * oriURL) {
if([oriURL isEqual:[self.dataInJSONModel.Content[indexPath.row] CoverImage]])
{
cell.coverImage.image = image;
}
}];
Тем не менее проблема сохраняется. Или я, возможно, неправильно запрограммировал его? Нашел несколько предложений в Интернете, но конкретного решения пока не видели.
Нужна помощь!
EDIT
Я уже сделал некоторые изменения к нему, но по-прежнему не работает:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NewsFeedCell * cell = [tableView dequeueReusableCellWithIdentifier:@"NewsFeedCell" forIndexPath:indexPath];
if (self.dataInJSONModel)
{
cell.coverImage.image = nil;
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadImageWithURL:[self.dataInJSONModel.Content[indexPath.row] CoverImage] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize) {} completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL * oriURL) {
if ([cell isEqual:[self.tableView cellForRowAtIndexPath:indexPath]])
{
cell.coverImage.image = image;
}
}];
}
Может ли вы показать коды в вашем методе cellForRowAtIndexPath ? –
@UlasSancak My cellForRowAtIndexPath как выше. – Marcus
Прежде всего вернитесь к методу sd_setImageWithURL. Он должен работать. Проблема не в этом. Вы используете xib для ячейки или это прототип ячейки? –