无法在 uicollectionview、UICollectionView 的特定 indexPath.row 处为单元格设置标题
Posted
技术标签:
【中文标题】无法在 uicollectionview、UICollectionView 的特定 indexPath.row 处为单元格设置标题【英文标题】:can not set title for cell at specific indexPath.row of uicollectionview, UICollectionView 【发布时间】:2012-11-22 21:36:02 【问题描述】:在 UICollectionView 上工作时,我正在从 nib 加载一个单元格,如下所示
- (void)viewDidLoad
[super viewDidLoad];
/* Uncomment this block to use nib-based cells */
UINib *cellNib = [UINib nibWithNibName:@"NibCell" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"cvCell"];
// Configure layout
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
self.collectionView.contentInset = UIEdgeInsetsMake(10.0f, 0.0f, 10.0f, 0.0f);
[flowLayout setItemSize:CGSizeMake(300, 200)];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
[self.collectionView setCollectionViewLayout:flowLayout];
我的 nib 文件如下所示
顶部标签用于显示单元格个数,中间标签用于显示某段文字
在 cellForItemAtIndexPath 方法中,我只想将文本设置为某一行的单元格(在本例中,我在第 1 行进行):
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
// Setup cell identifier
static NSString *cellIdentifier = @"cvCell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
UILabel *titleLabel = (UILabel *)[cell viewWithTag:100];
UILabel *cellLablel = (UILabel *)[cell viewWithTag:200];
cellLablel.text = self.dataArray[0][indexPath.row];
if ( indexPath.row == 1)
[titleLabel setText:@"this is row 1"];
return cell;
运行应用程序时,出现问题。不仅是 row1 的单元格的 titleLabel
设置为This is row 1
,还设置了row5和row9和row10的titleLabel:
如果有人知道我在中间做错了什么。请帮忙。
我的收藏包含 1 个部分和此部分的 15 行。
【问题讨论】:
有人对这种情况有想法吗?? 【参考方案1】:细胞被重复使用。一旦您向下滚动并且单元格 1 变得不可见,集合视图就会使其再次可用。只需为所有单元格设置文本,例如
titleLabel.text = [NSString stringWithFormat:@"this is row %d", indexPath.row];
【讨论】:
是的,这就是我所做的。我必须重设标题以上是关于无法在 uicollectionview、UICollectionView 的特定 indexPath.row 处为单元格设置标题的主要内容,如果未能解决你的问题,请参考以下文章