Je me sers de UICollectionView et je dois passer à la première cellule après avoir cliqué sur un bouton.
Le bouton est situé dans une (grande) section d'en-tête de la vue Collection ... lorsque je clique dessus, j'ai besoin de faire défiler l'écran jusqu'à ma première cellule située en dessous de ce bouton.
J'ai créé une action de ce bouton, mais je ne sais pas comment faire défiler jusqu'au premier UICollectionViewCell.
Est-ce que quelqu'un peut m'aider?
Utilisez cette méthode de délégation en définissant indexPath à la première position:
Rapide
self.collectionView?.scrollToItemAtIndexPath(NSIndexPath(forItem: 0, inSection: 0),
atScrollPosition: .Top,
animated: true)
Swift 3
self.collectionView?.scrollToItem(at: IndexPath(row: 0, section: 0),
at: .top,
animated: true)
Objectif c
[self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:0]
atScrollPosition:UICollectionViewScrollPositionTop
animated:YES];
Changer UICollectionViewScrollPositionTop
si vous voulez faire défiler et arrêter à une position différente
Il pourrait être possible d'utiliser la propriété associée à UIScrollView
collectionView.contentOffset.x = 0
Vous pouvez l'utiliser pour Objective - C
[self.restaurantCollectionView setContentOffset:CGPointZero animated:YES];
La solution suivante fonctionne bien pour moi:
UIView.animate(withDuration: 0.5, animations: {
self.collectionView?.contentOffset.x = 0
})
Il fait défiler jusqu'au premier élément et le contentInset peut également être vu.
scrollView.setContentOffset(CGPoint(x: 0.0, y: 0.0), animated: true)
if let indexPath = self.collectionView?.indexPathForItem(at: CGPoint(x: 0, y: 0)) {
self.collectionView?.scrollToItem(at: indexPath, at: .top, animated: false)
}
Default CollectionView Delgeate ...
- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated;