Is there a way to automatically scroll to the bottom of a UICollectionView

cchapman picture cchapman · Jun 6, 2013 · Viewed 8.7k times · Source

So I'm currently working on a project that has a button that adds cells to a UICollectionView and then needs to automatically scroll to the last cell (i.e. the bottom of the UICollectionView).

I've found the method scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated

But now I'm getting stuck at trying to find the indexPath of the last object in the CollectionView.

The problem seems to lie in that I've been trying to think of the cells in the UICollectionView as an array (can't enumerate through them, doesn't respond to lastObject and so on). The closest I can seem to get is the method visibleItems which does give me an array but doesn't help when I need cells that are added outside of the visible frame.

Is there a way to get the IndexPath for that last object in the CollectionView?

Answer

Timothy Moose picture Timothy Moose · Jun 7, 2013

You can just ask your data source:

NSInteger section = [self numberOfSectionsInCollectionView:self.collectionView] - 1;
NSInteger item = [self collectionView:self.collectionView numberOfItemsInSection:section] - 1;
NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:item inSection:section];