xcode CollectionViewController scrollToItemAtIndexPath not working
xcode
Solution
Whether it's a bug or a feature, UIKit throws this error whenever `scrollToItemAtIndexPath:atScrollPosition:Animated` is called before `UICollectionView` has laid out its subviews.
As a workaround, move your scrolling invocation to a place in the view controller lifecycle where you're sure it has already computed its layout, like so:
@implementation CollectionViewControllerSubclass
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
// scrolling here doesn't work (results in your assertion failure)
}
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
NSIndexPath *indexPath = // compute some index path
// scrolling here does work
[self.collectionView scrollToItemAtIndexPath:indexPath
atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally
animated:YES];
}
@end
At the very least, the error message should probably be more helpful. I've opened a rdar://13416281; please dupe.
Problem
I have created a `CollectionView` Control and filled it with images. Now I want to scroll to item at a particular index on start. I have tried out `scrollToItemAtIndexPath` as follows: ``` [self.myFullScreenCollectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES]; ``` However, I am getting following exception. Could anyone guide me on where am I going wrong. ``` 2013-02-20 02:32:45.219 ControlViewCollection1[1727:c07] *** Assertion failure in -[UICollectionViewData layoutAttributesForItemAtIndexPath:], /SourceCache/UIKit_Sim/UIKit-2380.17 /UICollectionViewData.m:485 2013-02-20 02:32:45.221 ControlViewCollection1[1727:c07] must return a UICollectionViewLayoutAttributes instance from -layoutAttributesForItemAtIndexPath: for path <NSIndexPath 0x800abe0> 2 indexes [0, 4] ```