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;
【讨论】:
已修复!错误出现在 numberOfItemsInSection 和 numberOfSectionsInCollectionView )以上是关于UICollectionView 仅显示数据集中的第一项的主要内容,如果未能解决你的问题,请参考以下文章
如何从JSON加载特定数据并显示UICollectionView?