web-dev-qa-db-fra.com

UICollectionView - Défilement jusqu'à la première cellule

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? 

14
Alessandro Garcez

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

42
Jacopo Penzo

Il pourrait être possible d'utiliser la propriété associée à UIScrollView

collectionView.contentOffset.x = 0
5
user6226218

Vous pouvez l'utiliser pour Objective - C

        [self.restaurantCollectionView setContentOffset:CGPointZero animated:YES];
2
Celil Bozkurt

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.

2
Kevin Waltz
 scrollView.setContentOffset(CGPoint(x: 0.0, y: 0.0), animated: true)
0
JP Aquino
if let indexPath = self.collectionView?.indexPathForItem(at: CGPoint(x: 0, y: 0)) {
            self.collectionView?.scrollToItem(at: indexPath, at: .top, animated: false)
}
0
Sami Youssef

Default CollectionView Delgeate ...

- (void)scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated;
0
Kavita