Подтвердить что ты не робот

Ячейка UICollectionView не может быть выбрана после перезагрузки в случае, если ячейка была затронута во время перезагрузки

Я использую UICollectionView для отображения информации, относящейся к серверу. Этот UICollectionView позволяет выбирать ячейки для отображения некоторых вложенных данных. К сожалению, если пользователь прикасается и удерживает все ячейки во время вызова приложения [collectionView reloadData], эта ячейка больше не реагирует на касания (метод collectionView:didSelectItemAtIndexPath: не вызывается). Я могу выбрать любые ячейки, кроме этого.

Я создал простое приложение, которое может воспроизвести эту проблему: ссылка

Есть идеи, как это исправить?

4b9b3361

Ответ 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]];

Он также работал правильно.