У меня есть приложение с UICollectionView
с горизонтальной прокруткой ячеек (отображается только одна ячейка за раз). Каждая ячейка содержит UITableView
, которая отображает контент (URL-ссылки) в каждом из UITableViewCell
.
Проблема в том, что первые две ячейки UICollectionView
отображают правильное содержимое, но начиная с третьей ячейки содержимое отображается из выделенных ячеек. Правильный контент на UITableView
dequeued cell отображается только в том случае, если пользователь прокручивается вниз и затем прокручивает вверх.
Например, содержимое третьей ячейки является содержимым первой ячейки. Ячейка является обычным UICollectionViewCell
, в котором есть UITableView
. Пользовательская ячейка реализует UITableViewDataSource
, UITableViewDelegate
.
Я искал различные форумы и сайты и нашел решение обновления. Я попытался добавить [collectionView reload]
в метод -cellForItemAtIndexPath:
, но он переходит в постоянный цикл. Я знаю, что это неправильное место, но у меня нет других методов, которые вызывают обновление (только прокрутка через ячейки загружает содержимое следующей ячейки).
Может кто-нибудь, пожалуйста, помогите мне решить проблему?Dequeued UICollectionViewCell не обновляется
ответ
Вам не хватает информации о dequeuing.
Когда вы выбрали 3d custom UICollectionViewCell
, он не выделяется, как когда он отображается в первый раз. Вместо этого ваш просмотр коллекции «повторяет» первую ячейку для отображения 3d. Лучший момент для очистки контента в вашем пользовательском классе ячейки - -(void)prepareForReuse
. Если вы переопределите его и очистите его содержимое, -cellForItemAtIndexPath:
удалит ячейку «clear», которую вы можете дополнительно настроить.
Однако я точно не знаю, как «очистить» таблицуView, не уверен, возможно ли это. У вас должно быть reloadData
на вашем столеView в -cellForItemAtIndexPath:
. Пример:
- (UICollectionViewCell*)collectionView:(UICollectionView*)collectionView cellForItemAtIndexPath:(NSIndexPath*)indexPath
{
MyCVCell *cell = [collectionView dequeueReusableCellWithIdentifier:@"MyCVCell" forIndexPath:indexPath];
cell.arrayOfURLsForDisplay = self.arrayOfArraysOfURLs[indexPath.row];
[cell.tableView reloadData];
return cell;
}
Здесь я имею в виду у вас есть некоторые arrayOfArraysOfURLs
в вашем ViewController, и вы Dislay URL-адреса в пользовательской ячейке с некоторой arrayOfURLsForDisplay
у меня была аналогичная проблема, вместо того, чтобы использовать [cell.tableView reloadData]
внутри cellForItemAtIndexPath
, я назвал collectionView.reloadData
в prepareForUse
методе, который перезаписывается в пользовательском UITableviewCell
- 1. Многократное использование UICollectionViewCell не обновляется
- 2. Ярлык в UICollectionViewCell не обновляется
- 3. Почему мой UICollectionViewCell не обновляется?
- 4. Ярлык текста в UICollectionViewCell не обновляется
- 5. UICollectionviewCell не обновляется на ios 7
- 6. iOS Swift Dequeued Повторно используемая ячейка не отображается
- 7. UICollectionViewCell UILabel с NSMutableAttributedString attribittedText медленно обновляется и отображается
- 8. UICollectionViewCell иногда не отображается
- 9. Подкласс UICollectionViewCell не отображается
- 10. UICollectionViewCell не правильный размер
- 11. Пользовательский UICollectionViewCell не загружается
- 12. UICollectionViewCell didDeselectItemAtIndexPath не называется
- 13. UICollectionViewCell не распознан?
- 14. UICollectionViewCell не обнаруживает касаний
- 15. UICollectionViewCell не отображается
- 16. UICollectionViewCell не отображает ячейку
- 17. UICollectionViewCell индекс не точно
- 18. Progress View не обновляется
- 19. Sub-class UICollectionViewCell не обновляет изображение
- 20. Подпрограммы UICollectionViewCell не обновляются при модульном тесте
- 21. dequeued UITableViewCell имеет неправильный макет до прокрутки (с использованием автозапуска)
- 22. UICollectionViewCell не принимает максимальную ширину
- 23. MapView внутри UICollectionViewCell не работает
- 24. UITextField внутри UICollectionViewCell не достижим
- 25. UICollectionViewCell не отображается в UICollectionView
- 26. UITextView не запускается внутри UICollectionViewCell
- 27. NSOperationQueue mainQueue не обновляет UICollectionViewCell
- 28. UICollectionViewCell Flip анимация не работает
- 29. UIWebView не масштабируется до UICollectionViewCell
- 30. 'Anyobject' не конвертируется в 'UICollectionViewCell'
Благодаря куче для help.I пришлось вызвать метод clearsContextBeforeDrawing ([cell.tableView clearsContextBeforeDrawing];) в - (пустоте) prepareF orReuse в UITableView, а затем вызвать метод reload ([cell.tableView reloadData]) в cellForItemAtIndexPath.It работает безупречно после изменения кода, как указано выше. Ваш ответ был большой помощью (я должен был опубликовать его, прежде чем потратил много времени на себя). Кроме того, я вызываю [cell.tableView clearsContextBeforeDrawing] и перезагружаюсь в cellForItemAtIndexPath, он работает одинаково без необходимости подготовки forReuse, просто FYI. – TheCoder
Не проблема. Однако общая практика использования таких элементов управления ('UICollectionView' и' UITableView') требует от вас переопределения '-prepareForReuse' для приведения ячейки в состояние« по умолчанию ». В конкретных случаях (например, ваш) не может быть необходимости в этом. –