无法在 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 处为单元格设置标题的主要内容,如果未能解决你的问题,请参考以下文章

RFQuiltLayout 和 UICollectionView

如何在 UICollectionView 中居中行?

UiCollectionView 间距问题 - 快速

UICollectionView

UICollectionView 初始化问题

从 UICollectionViewCell 调用函数以在 UICollectionView 中使用