我有一个UIcollectionview,显示一个名为Items的对象数组。 在我的应用程序的生命周期中的某一点,我确实需要将collectionview(或滚动它)移动到我通过NSnotification接收的特定项目。我不知道该项目的NSIndexPath,但它在collectionview中肯定可用。 我试过了
NSIndexPath *myIndexPath = [NSIndexPath indexPathForItem:myItem inSection:1];
[self.collectionView scrollToItemAtIndexPath:myIndexPath
atScrollPosition:UICollectionViewScrollPositionCenteredVertically
animated:NO];
但是这会给出一个任意数字而不相关。
我该怎么做?
答案 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