Ячейка UICollectionView не может быть выбрана после перезагрузки в случае, если ячейка была затронута во время перезагрузки
Я использую UICollectionView
для отображения информации, относящейся к серверу. Этот UICollectionView
позволяет выбирать ячейки для отображения некоторых вложенных данных. К сожалению, если пользователь прикасается и удерживает все ячейки во время вызова приложения [collectionView reloadData]
, эта ячейка больше не реагирует на касания (метод collectionView:didSelectItemAtIndexPath:
не вызывается).
Я могу выбрать любые ячейки, кроме этого.
Я создал простое приложение, которое может воспроизвести эту проблему: ссылка
Есть идеи, как это исправить?
Ответы
Ответ 1
Похож на ошибку (я полагаю, что есть аналогичная проблема, когда cell.selected = YES
без -selectItemAtIndexPath:animated:scrollPosition:
заставлял ячейку быть недоступной)
Однако если вы это сделаете:
[self.collectionView reloadItemsAtIndexPaths:[self.collectionView indexPathsForVisibleItems]];
вместо [self.collectionView reloadData]
работает как ожидалось.
Обновление: найдено ответ вышеупомянутой проблемы
Другое обновление: Похоже, что это действительно было ошибкой. Протестировал исходный проект на симуляторе iOS8, и проблема теперь решена.
Ответ 2
В соответствии с ответом @Alladinian говорится, что вместо использования [self.collectionView reloadData]
используйте self.collectionView reloadItemsAtIndexPaths:.....
, работающий в вашей демонстрации, а также я попытался с помощью
[self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];
Он также работал правильно.