Зацикливание через uiimageview в customCell
Привет, у меня есть таблица продуктов и представление сведений о продукте для каждого продукта. У меня есть много изображений, которые загружаются и кэшируются на диске и в памяти при каждом выборе пользователем продукта для проверки его деталей. Я пытаюсь получить кешированные изображения и настроить их для моего четырех UIImageView внутри настраиваемой ячейки в UITableViewController. Я не могу установить изображения, хотя я могу зарегистрировать их через функцию NSLog() Я использую этот код:
int index = 0;
int indexOfImages = 1;
self.imageCache = [[SDImageCache alloc] initWithNamespace:@"menuImage"];
for ( UIImageView *currentImageView in cell.contentView.subviews)
{
NSLog(@"the imageindex is: %d",indexOfImages);
NSLog(@"the index is: %d",index);
NSLog(@"the count is: %lu",(unsigned long)[self.currentProduct.mirsaProductUrlImage count]);
if (index < [self.currentProduct.mirsaProductUrlImage count] ) {
[self.imageCache queryDiskCacheForKey:self.currentProduct.mirsaProductUrlImage[indexOfImages]
done:^(UIImage *image, SDImageCacheType cacheType) {
if (image) {
currentImageView.image = image;
}
}];
indexOfImages++;
index++;
}
else
{
break;
}
}
и если я попытаюсь изменить путь цикла к этому
for ( UIImageView *currentImageView in self.tableView.subViews)
я получил эту ошибку UITableViewWrapperView setImage:]: непризнанный селектор, отправленный экземпляру
Я просто хочу знать, не ошибаюсь ли я, что я имею в виду, что я не могу связаться с ними через этот цикл или что происходит?
Ответы
Ответ 1
Вы должны изменить цикл как:
for ( UIView *currentView in cell.contentView.subviews)
{
if([currentView isKindOfClass:[UIImageView class]])
{
// here Do All the stuff for imageViews
}
}
Сделайте все это в cellForRowAtIndexPath
и для изменения изображения imageView возьмите слабый экземпляр imageView следующим образом:
__weak UIImageView *weakImage = currentImageView;
[self.imageCache queryDiskCacheForKey:self.currentProduct.mirsaProductUrlImage[indexOfImages]
done:^(UIImage *image, SDImageCacheType cacheType) {
if (image) {
weakImage.image = image;
}
}];
Ответ 2
Я думаю, что это не сработает с вашим кодом.
а
для (UIImageView * currentImageView в cell.contentView.subviews)
эта строка попытается преобразовать все подъязыки вашего содержимого содержимого в UIImageview.
Вы можете установить тег на все ваши UIImageview, а затем напрямую обращаться к ним с помощью тега, например
cell.contentView.viewWithTag(yourtag)
и установите для него образ