2013-07-16 53 views
0

我有一個UIcollectionview顯示一個名爲Items的對象數組。 在我的應用程序的生命週期中,我確實需要將collectionview(或滾動它)移動到我通過NSnotification接收的特定項目。我不知道該項目的NSIndexPath,但它在collectionview中絕對可用。 我試過UICollectionView,滾動到一個項目而不知道它的NSIndexPath

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

但是這給出了一個任意數字並且不相關。

我該怎麼做?

+0

什麼是myItem的數據類型的API預計NSInteger的。是myItem NSInteger? – Amit

+0

myItem屬於Item類型,這就是爲什麼我不能在該方法中使用它,但我無法在collecionview中查看它! – funkycoldmedia

回答

0

我不知道代碼的細節,所以我概括了我的答案。

您可以擁有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 
+0

那麼這種工作呢,我有一些使用isEqual的東西。我嘗試通過uicollectionview上的可用方法,但沒有發現任何東西,仍然希望獲得比循環遍歷myArray更有效的東西(它會變得很大) – funkycoldmedia

+1

爲了簡化起見,您可以爲item指定索引屬性並在填充時設置它UICollectionView,當你會得到通知,然後你可以採取索引,並獲得NSIndexPath。無需在數組上迭代。 – Amit

相關問題