144 votes

Index de la cellule visible actuelle du UICollectionView

J'utilise UICollectionView pour la première fois dans mon application iPad. J'ai défini UICollectionView de sorte que sa taille et celle de la cellule soient identiques, ce qui signifie qu'une seule cellule est affichée à la fois.

Problème : Maintenant, lorsque l'utilisateur fait défiler UICollectionView J'ai besoin de savoir quelle cellule est visible. Je dois mettre à jour les autres éléments de l'interface utilisateur en cas de changement. Je n'ai pas trouvé de méthode déléguée pour cela. Comment puis-je réaliser cela ?

Code :

[self.mainImageCollection setTag:MAIN_IMAGE_COLLECTION_VIEW];
[self.mainImageCollection registerClass:[InspirationMainImageCollectionCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
[self.mainImageFlowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[self.mainImageFlowLayout setMinimumInteritemSpacing:0.0f];
[self.mainImageFlowLayout setMinimumLineSpacing:0.0f];
self.mainImageFlowLayout.minimumLineSpacing = 0;
[self.mainImageCollection setPagingEnabled:YES];
[self.mainImageCollection setShowsHorizontalScrollIndicator:NO];
[self.mainImageCollection setCollectionViewLayout:self.mainImageFlowLayout];

Ce que j'ai essayé :

Como UICollectionView est conforme à UIScrollView que j'obtiens lorsque le défilement de l'utilisateur se termine par UIScrollViewDelegate méthode

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

Mais à l'intérieur de la fonction ci-dessus, comment puis-je obtenir l'index de la cellule visible actuelle de l'écran ? UICollectionView ?

-1voto

Swift 3 et Swift 4 :

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
   var visibleRect = CGRect()

   visibleRect.origin = collectionView.contentOffset
   visibleRect.size = collectionView.bounds.size

   let visiblePoint = CGPoint(x: visibleRect.midX, y: visibleRect.midY)

   guard let indexPath = collectionView.indexPathForItem(at: visiblePoint) else { return } 

   print(indexPath[1])
}

Si vous voulez montrer le nombre réel, vous pouvez ajouter +1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X