3

UICollectionViewを含むviewControllerがあり、デリゲートメソッドshouldSelectItemAtIndexPathとdidSelectItemAtIndexPathの両方を実装しています。shouldSelectメソッドは期待どおりに機能しており、選択されたセルごとに呼び出されます。

何度もタップされた場合でも、didSelectメソッドはタップされた最初のセルで呼び出されません。ただし、2番目のセルをタップすると、didSelectメソッドが呼び出されますが、indexPath.itemの値は以前にタップされたセルのものです。

たとえば、collectionViewの最初のセルをタップすると、indexPath.itemの値が0のshouldSelectが呼び出されます。セルを複数回タップしても、DidSelectは呼び出されません。

次に、他のセル、たとえば、collectionViewの4番目のセルをタップすると、shouldSelectが呼び出され、そのindexPath.item値= 3になります。didSelectも呼び出されますが、indexPath.item値= 0(以前に選択されたセル)です。 )。

別のセルを選択し続けると、didSelectは引き続き呼び出されますが、indexPath.item値は常に以前に選択されたアイテムのものです。セルを複数回タップすると、別のセルをタップするまで、didSelectが呼び出されません。

誰か?私は困惑しています。他のすべてのデータソースとデリゲートメソッドは正常に機能しているようです。デリゲートとデータソースはストーリーボードに正しく接続されています。

4

1 に答える 1

9

あなたの

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

実際にはありません

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

(DidDeSelect 対 DidSelect)

同じ問題がありました。

于 2013-01-08T19:28:01.413 に答える