无法获得第一个单元格的正确索引

Posted

技术标签:

【中文标题】无法获得第一个单元格的正确索引【英文标题】:Cannot get the correct index of first cell 【发布时间】:2017-11-08 11:42:00 【问题描述】:

尝试在 didSelectItemAtIndexPath 中从 cellForItemAtIndexPath 访问 uilabel,但无法获取第一个单元格。这是我的代码

cellForItemAtIndexPath

UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
UILabel *featureName = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, cell.frame.size.width-10, cell.frame.size.height-10)];
    featureName.tag = indexPath.row;
    [cell addSubview:featureName];

didSelectItemAtIndexPath

UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];

UILabel *featureName = [cell viewWithTag:indexPath.row];
featureName.textColor = [UIColor lightGrayColor];

可以从所有单元格中获取label.tag,但不能从第一个单元格中获取。点击第一个单元格时应用程序崩溃。

【问题讨论】:

请显示控制台的崩溃输出 @VixHunk 澄清一下 0 是一个有效值 developer.apple.com/documentation/uikit/uiview/… - 它可能崩溃的原因是当您提供值 0 时它会返回另一个视图 【参考方案1】:

indexPath.row 第一行为 0,但 0 不是有效标签。 我认为你应该只使用非零值。

试试吧

featureName.tag = indexPath.row + 1;

...

UILabel *featureName = [cell viewWithTag:indexPath.row+1];

【讨论】:

太棒了,完美运行。谢谢:) @VixHunk 澄清一下 0 是一个有效值 developer.apple.com/documentation/uikit/uiview/… - 它可能崩溃的原因是当您提供值 0 时它会返回另一个视图【参考方案2】:

cellForItemAtIndexPath

UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
UILabel *featureName = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, cell.frame.size.width-10, cell.frame.size.height-10)];
    featureName.tag = indexPath.row + 1;
    [cell addSubview:featureName];

在 didSelectItemAtIndexPath 中

UICollectionViewCell *cell = [collectionView cellForItemAtIndexPath:indexPath];

UILabel *featureName = [cell viewWithTag:indexPath.row + 1 ];
featureName.textColor = [UIColor lightGrayColor];

希望这能解决你的问题:)

【讨论】:

以上是关于无法获得第一个单元格的正确索引的主要内容,如果未能解决你的问题,请参考以下文章

Excel - 需要从数组中搜索列表单元格的子字符串,无法获得索引/匹配工作吗?

根据获得的当前单元格的索引路径,自定义单元格中的按钮单击功能

搜索中的第一个 UITableViewCell UIButton 保持不变

表格视图按钮索引单元格

UICollectionView 中有两个自定义单元格,但第二个单元格的大小不正确

获取相邻列中最近的非空单元格的行索引(Excel)