Странное поведение с UICollectionViewDelegate

У меня есть viewController, который содержит UICollectionView, в котором я реализовал оба метода делегата shouldSelectItemAtIndexPath и didSelectItemAtIndexPath. Метод shouldSelect работает должным образом и вызывается для каждой выбранной ячейки.

Метод didSelect не вызывается для первой затронутой ячейки, даже если она была нажата несколько раз. Но если вы нажмете на вторую ячейку, вызовется метод didSelect, но значение indexPath.item будет для ранее нажатой ячейки.

Например, я нажимаю на первую ячейку в collectionView, и вызывается shouldSelect со значением indexPath.item = 0. DidSelect не вызывается даже для нескольких нажатий на ячейку.

Если я затем нажму на любую другую ячейку, скажем, например, на 4-ю ячейку в collectionView, будет вызвана функция shouldSelect, и ее значение indexPath.item = 3. Также вызывается didSelect, но значение indexPath.item = 0 (ранее выбранная ячейка ).

Если я продолжаю выбирать разные ячейки, didSelect продолжает вызываться, но значение indexPath.item всегда относится к ранее выбранному элементу. Если я нажму на ячейку несколько раз, didSelect не будет вызван, пока я не нажму на другую ячейку.

Кто-нибудь? Я в тупике. все остальные методы источника данных и делегата работают нормально. Делегат и источник данных правильно подключены в раскадровке.


person Alpinista    schedule 12.12.2012    source источник


Ответы (1)


Убедитесь, что ваш

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

на самом деле не

- (void)collectionView:(UICollectionView *)collectionView didDeSelectItemAtIndexPath:(NSIndexPath *)indexPath

(DidDeSelect против DidSelect)

У меня была такая же проблема.

person Paulius Dragunas    schedule 08.01.2013
comment
Святое дерьмо, это, вероятно, только что сэкономило мне МНОГО времени. Сомневаюсь, что я когда-либо увидел бы это. - person Jesse; 22.03.2013