1

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

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

但这会返回一个任意数字并且不相关。

我怎样才能做到这一点?

4

1 回答 1

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
于 2013-07-16T10:49:56.537 回答