Question

I have a UIcollectionview that shows an array of objects called Items. At one point in the lifecycle of my app I do need to move the collectionview ( or scroll it ) to a specific Item that I receive Via NSnotification. I do not know the NSIndexPath of that Item but its definitely available in the collectionview. I tried

  NSIndexPath *myIndexPath = [NSIndexPath indexPathForItem:myItem inSection:1];
  [self.collectionView scrollToItemAtIndexPath:myIndexPath  
   atScrollPosition:UICollectionViewScrollPositionCenteredVertically
                                   animated:NO];

But this gives back an arbitrary number and not relevant.

How can I do that?

Was it helpful?

Solution

I dont know details of code so i am generalising my answer.

You can have a unique property for myItem say ID.

If you are maintaining an array of items say : myItemArray, and populating collection view in same order then following can work:

NSArray* myItemArray; //array used to populate collectionView
NSIndexPath *myIndexPath; //this is what we need to know
int index = 0;

//myItem is object of item type & notifiedItem is notified item
for (Item* myItem in myItemArray) {
    if (myItem.ID == notifiedItem.ID) {
         myIndexPath = [NSIndexPath indexPathForItem:index inSection:1];//you got the index path right
        break;
    }
    index++;
}

//use the index path
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top