2016-08-04 1 views
1

Я использовал библиотеку SDWEBImage для отображения изображений в scrollview под табличным представлением.flashy изображения из предыдущих ячеек, используя sdwebimage ios?

Моя проблема заключается в том, что изображения полностью загружаются, но когда я прокручиваю табличные изображения с помощью ярких изображений из предыдущих ячеек или дубликатов изображений в Imageview. Я программно создана ImageView, как показано ниже:

enter image description here

Мой код ниже:

for (NSString *stringurl in [[[Arr objectAtIndex:indexPath.row]valueForKey:@"sports"]valueForKey:@"image"]) { 

      UIImageView *yourImageView =[[UIImageView alloc] initWithFrame:CGRectMake(x,10,40,40)]; 

      NSURL *urlimg=[NSURL URLWithString:stringurl]; 

      [yourImageView sd_setImageWithURL:urlimg 
           placeholderImage:[UIImage imageNamed:@"placeholder"] options:indexPath.row ? SDWebImageRefreshCached : 0]; 
     [cell.arenaimgscroll addSubview:yourImageView]; 

      x = x + 50; 
      if (stringurl==NULL) { 
       cell.arenaimgscroll.hidden=YES; 
      } 
      else{ 
       cell.arenaimgscroll.hidden=NO; 

      } 
     } 
+0

Не добавлять скриншоты. Показать код. – NSNoob

+0

запрограммированное добавление изображения в этой таблице. В этой ячейке я использовал scrollview для отображения нескольких изображений в одной ячейке. Данные передаются в webservice. – Psnt143

+0

Вы также можете использовать 'UICollectionView' внутри' UITableViewCell', обратитесь к этому [git repository] (https://github.com/DipenPanchasara/UITableViewWithHorizontalScroll). –

ответ

0

Просто краткий обзор, поэтому вы получите ваш ответ

UITableView высоко оптимизирован, и, следовательно, сохранить в памяти только видимые строки на экране. Теперь все ячейки ячеек кэшируются в пуле и повторно используются и не восстанавливаются. Всякий раз, когда пользователь прокручивает UITableView, он добавляет только скрытые строки в пуле и повторно использует их для видимых строк.

Итак, теперь, приходя к вашему ответу

При прокручивание UITableView, метод DataSource UITableView вызывается снова для каждого indexPath, таким образом dequeueReusableCellWithIdentifier дает кэшированные ячейку, которая уже есть UIImageView добавил, но добавить UIImageView снова к нему (источник ошибок)

Лучше решение будет добавить ImageView в интерфейсе строителя

или

вы можете проверить, если ImageView уже добавлены, а затем пропустить стадию добавления снова

UPDATE:

Примечание: Это решение не оптимизированы вы уже не используете элементы изображения повторно, но решите свою проблему.

Добавьте этот сценарий выше вашего для петли, это для очистки старых изображений (которые получили повторно) от Scrollview (arenaimgscroll):

[cell.arenaimgscroll.subviews makeObjectsPerformSelector: @selector(removeFromSuperview)]; 

    for (NSString *stringurl in [[[Arr objectAtIndex:indexPath.row]valueForKey:@"sports"]valueForKey:@"image"]) { 
    //YOUR CODE 
} 
+0

как его решить? – Psnt143

+0

обновленный мой ответ, пожалуйста, проверьте! –

+0

Что такое .forEach? я не понимаю ... – Psnt143

Смежные вопросы