无法在UICollection视图的每个部分加载数据?

时间:2015-11-03 10:57:42

标签: ios objective-c json uicollectionview

我有一些json数据有一些文件。它有4个部分 - 每个部分都有一些数据或没有数据。我需要显示每个部分的数据

我的问题是:

  1. 我使用NSDictionary将所有部分数据存储在一个数组中,我试图显示。但它没有显示我的数据
  2. 在每个部分中,标题应该是(例如:白色(0-数据),黑色(3-数据))。我试过,但是得到了。

2 个答案:

答案 0 :(得分:2)

您的代码需要进行一些更改。试试下面的内容。

在viewDidLoad中,

[self getdata];
[self.mycollectionView reloadData];

在getdata方法中,

NSArray *arrayFiles = [NSArray arrayWithObjects: dictOriginal, dictOriginal2, dictOriginal3, dictOriginal4, nil];

for (NSDictionary *dict in arrayFiles) {
  NSMutableArray *arr = [NSMutableArray array];
  NSArray *a = dict[@"files"];
  for(int i=0; i < a.count; i ++) {
      NSString *strName = [NSString stringWithFormat:@"%@",[[dict[@"files"] objectAtIndex:i] valueForKey:@"name"]];
      NSLog(@"str: %@", strName);
      [arr addObject:strName];
   }  
  [arrayPDFName addObject:arr];
}

在numberOfItemsInSection中,

return ((NSArray *)arrayPDFName[section]).count;

在cellForRowAtIndexPath中,

cell.myLabel.text = arrayPDFName[indexPath.section][indexPath.row];

为章节标题

执行此操作
  1. 将一个可变数组作为titleArray或其他内容。
  2. 在viewdidload中,titleArray = [NSMutableArray array];
  3. 在getdata方法中,

    NSDictionary *dictOriginal = jsonResults[@“white”]; 
    [titleArray addObject:[NSString stringWithFormat:@"white(%d)", dictOriginal[@"count"]]];
    

    对dictOriginal2,dictOriginal3,dictOriginal4执行相同的操作。

    在viewForSupplementaryElementOfKind中,

    header.myHeaderLabel.text = titleArray[indexPath.section]
    

    在numberOfSectionsInCollectionView中,

    -(NSInteger) numberOfSectionsInCollectionView:(UICollectionView *)collectionView { 
      return titleArray.count; 
    }
    

答案 1 :(得分:1)

您似乎可能在拥有任何数据之前设置了集合视图。

如果我告诉您输入的日志每次都返回0, 0, 0, 0,则arrayPDFName为空。

尝试在[self.collectionView reloadData];方法的末尾调用getdata

如果这不是问题,那么您可能会将项目添加到arrayPDFName数组中出现问题。

编辑:

尝试:

NSArray *arr = [NSArray arrayWithObjects: dictOriginal[@"files"], dictOriginal2[@"files"], dictOriginal3[@"files"], dictOriginal4[@"files"], nil];

编辑:

您在每个部分看到4个项目,因为您在arrayPDFName.count;中返回numberOfItemsInSection:

相反,您想要返回内部文件的计数:

return arrayPDFName[section][@"count"];