2014-10-02 104 views
1

這裏非常簡單的問題;我正在使用UICollectionView,並且希望每個部分顯示一定數量的圖像,並根據與該部分相匹配的圖像的數量來確定。返回部分iOS中的項目數

例如:

Category: x # Images in Category: y # Images In Section: y

我有整理東西都往類別下來,我可以爲每個類別的計數,但我不知道怎麼回「類別」部分中每個圖像的正確值。這是我到目前爲止有:

- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
{ 
// Category Delineater Here 

for (int i = 0; i <= _categoryCount.count; i++) 
{ 
    PFQuery *tiredQuery = [[PFQuery alloc] initWithClassName:@"savedImages"]; 
    [tiredQuery whereKey:@"imageCategory" equalTo:[_categoryCount objectAtIndex:0]]; 
    [tiredQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) 
    { 
     if (!error) 
     { 
      NSLog(@"What does this return? %@", objects); 
     } 
     else 
     { 
      NSLog(@"This returns an error: %@", error); 
     } 
    }]; 
} 

return _extractedImagesArray.count; 
} 

目前,_extractedImagesArray.count是下載圖片的總數。如何根據特定類別的圖像數量更改本節中返回的金額?

編輯:對於數據結構的澄清:

每個圖像具有固定到它的類別。圖像全部放置在相同的分析類上。

我的最終目標是得到它類似於此([X]表示在這種情況下的圖像):

類別1 XXXXX

類別2 XXX

類別3 XXXX

等等等等

回答

0

這行的樣子就像一個問題:

[tiredQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)

你使用異步運行,所以你不會得到結果回來馬上方法。 -collectionView:numberOfItemsInSection:不會等待您異步查找對象,然後對它們進行計數 - 您需要立即返回對象的數量。

聽起來好像您可能需要提前做一些處理以確定每個部分中的對象數量,然後記住某處的計數,以便在收集視圖提問時可以提供這些計數。

0

看起來像你正在使用Parse。

在重新加載數據時,您不應該對後端進行調用。嘗試是這樣的:

- (void)getImages { 
    for (int i = 0; i <= _categoryCount.count; i++) { 
     PFQuery *tiredQuery = [[PFQuery alloc] initWithClassName:@"savedImages"]; 
     [tiredQuery whereKey:@"imageCategory" equalTo:[_categoryCount objectAtIndex:0]]; 
     [tiredQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
      if (!error) { 
       _extractedImagesArray = objects; 
       [collectionView reloadData]; 
      } 
      else { 
       NSLog(@"This returns an error: %@ %@", error, [error userInfo]); 
      } 
     }]; 
    } 
} 

- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 
    return _extractedImagesArray.count; 
} 

這裏是返回不同數量的物品的依賴沒有哪個部分你引用的一個例子。請記住,第0部分總是第一個。

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { 
    switch (section) { 
     case 0: 
      return xNumber; 
      break; 
     case 1: 
      return yNumber; 
      break; 
     case 2: 
      return zNumber; 
    } 
} 
+0

根據您需要解析數據的方式,您可能需要調整代碼的_extractedImagesArray = objects部分。 – 2014-10-02 21:52:12

+0

在另一個函數中添加'getImages'並正確分配它只會返回第一部分中的圖像數量。在這種情況下,它會返回'4'圖像,並將其應用於每個部分。我如何確保第1部分有4個圖像,第2部分有5個圖像,第3部分等? – 2014-10-02 22:02:46

+0

你能向我解釋第1節和第2節是如何處理你的Parse數據庫的?他們有一些關鍵嗎? – 2014-10-02 22:04:27