UICollectionView 仅显示数据集中的第一项

Posted

技术标签:

【中文标题】UICollectionView 仅显示数据集中的第一项【英文标题】:UICollectionView displays only first item from dataset 【发布时间】:2013-02-28 08:48:11 【问题描述】:

有两个实体(部门 > 员工)。

这个部门有 4 名员工。当我获取该部门的所有员工时,我的日志窗口显示:

CoreData:注释:总提取执行时间:4 行 0.0017 秒。

一切顺利。

UICollectionView 仅显示第一个员工 4 次。 例如:

员工1、员工1、员工1、员工1

而不是

员工1、员工2、员工3、员工4

我觉得 cellForItemAtIndexPath 中有一些错误:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"cellRecipe";    
    collectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];

    Employee *emp = [array_ objectAtIndex:indexPath.item];
    cell.name.text = emp.name;
    cell.image.image = emp.thumbImg;

    return cell;

array_ 是一个 NSMutableArray 在 fetch 之后

【问题讨论】:

【参考方案1】:

问题在于索引方法试试这个代码。

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView

    return  noOfItem/ noOfSection;


- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section

    return noOfSection;


- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

     static NSString *CellIdentifier = @"cellRecipe";    
     collectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
  ;

    Employee *emp = [array_ objectAtIndex:indexPath.section * noOfSection + indexPath.row];
    cell.name.text = emp.name;
    cell.image.image = emp.thumbImg;

    return cell;

【讨论】:

已修复!错误出现在 numberOfItemsInSectionnumberOfSectionsInCollectionView )

以上是关于UICollectionView 仅显示数据集中的第一项的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 仅显示第一项

R - 仅显示数据框子集中使用的级别

UICollectionView 中的节标题,仅出现第一个

如何从JSON加载特定数据并显示UICollectionView?

仅通过自动布局确定 UICollectionView 单元格高度

UICollectionView 更改方向不正确的单元格数