Nous avons une vue de collection. J'ai créé un calendrier qui affiche les dates horizontalement et je fais défiler les dates horizontalement. Maintenant, à l'écran, je ne vois que 3-4 dates. Maintenant, je veux faire défiler automatiquement vers une date sélectionnée lorsque l'écran du calendrier que j'ai montré. La date à laquelle je veux faire défiler n'est pas encore visible.
Pour cela, j'ai obtenu le chemin d'index pour une cellule particulière. Maintenant, j'essaie de le faire défiler vers un chemin d'index particulier.
func scrollCollectionView(indexpath:IndexPath)
{
// collectionView.scrollToItem(at: indexpath, at: .left, animated: true)
//collectionView.selectItem(at: indexpath, animated: true, scrollPosition: .left)
collectionView.scrollToItem(at: indexpath, at: .centeredHorizontally, animated: true)
_ = collectionView.dequeueReusableCell(withReuseIdentifier: "DayCell", for: indexpath) as? DayCell
}
Veuillez indiquer comment puis-je le mettre en œuvre?
Dans viewDidLoad
de votre contrôleur, vous pouvez écrire le code de défilement vers un chemin d'index particulier de la vue de collection.
self.collectionView.scrollToItem(at:IndexPath(item: indexNumber, section: sectionNumber), at: .right, animated: false)
Vous pouvez utiliser ceci
self.collectionView.scrollToItem(at:IndexPath(item: index, section: 0), at: .right, animated: false)
Dans Swift 4, cela a fonctionné pour moi:
override func viewDidLayoutSubviews() {
collectionView.scrollToItem(at:IndexPath(item: 5, section: 0), at: .right, animated: false)
}
le placer ailleurs a simplement donné lieu à des visuels étranges.
J'ai utilisé votre réponse @PGDev mais je l'ai mise dans viewWillAppear
et cela fonctionne bien pour moi.
self.collectionView?.scrollToItem(at:IndexPath(item: yourIndex, section: yourSection), at: .left, animated: false)