Comprendre IndexPath

Bonjour à tous,

J’ai actuellement une app qui contient une UICollectionView (horizontale) peuplée de 12 éléments.
Mon ViewController se conforme à UICollectionViewDataSource et j’implémente les méthodes obligatoires suivantes :

  • numberOfItemsInSection
  • cellForItemAt

Jusque là tout s’affiche correctement, maintenant j’aimerais que lorsque je touche un des éléments il se retrouve au centre de l’écran en faisant scroller la CollectionView. Pour cela, j’ai trouvé la fonction suivante :

J’ai un IBOutlet qui référence ma collectionView, dans mon viewDidLoad, je fais donc un :
collectionView.scrollToItem(at: IndexPath, at: .centeredHorizontally, animated: true)

On voit que le premier paramètre qui est attendu est l’IndexPath et c’est là que je commence à être perdu. Je comprends pas comment je fais pour récupérer l’IndexPath ?
Dois-je déclarer une variable qui va contenir mon indexPath ?

Si quelqu’un peut m’éclairer, je vous en remercie d’avance :slightly_smiling_face:

Du coup j’ai trouvé la solution, il fallait tout simplement que j’implémente la méthode didSelectItemAt du protocole UICollectionViewDelegate

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
}

1 J'aime

Hello @astro

Bien joué, et merci d’avoir partager la solution avec tout le monde (on a pas été assez rapide pour te répondre :joy:)