UICollectionView,在不知道其NSIndexPath的情况下滚动到Item

时间:2013-07-16 05:41:06

标签: ios uicollectionview nsindexpath

我有一个UIcollectionview,显示一个名为Items的对象数组。 在我的应用程序的生命周期中的某一点,我确实需要将collectionview(或滚动它)移动到我通过NSnotification接收的特定项目。我不知道该项目的NSIndexPath,但它在collectionview中肯定可用。 我试过了

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

但是这会给出一个任意数字而不相关。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我不知道代码的细节,所以我推广了我的答案。

您可以为myItem说出ID的唯一属性。

如果要维护一个项目数组,请说:myItemArray,并按相同的顺序填充集合视图,然后可以使用以下内容:

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