2014-10-02 56 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