IndexPath.row 对于静态单元格不是唯一的

Posted

技术标签:

【中文标题】IndexPath.row 对于静态单元格不是唯一的【英文标题】:IndexPath.row is not unique for Static Cells 【发布时间】:2016-04-27 16:51:00 【问题描述】:

我有一个带有静态单元格和节标题的 TableViewController。我试着打电话给indexPath.row 但是,它们不是唯一的。例如

TableView:
- Header 1
  - Cell1  indexPath = 0
- Header 2
  - Cell2  indexPath = 0
  - Cell3  indexPath = 1
  - Cell4  indexPath = 2

获取行的唯一标识符的正确方法是什么?


因为使用这个使 2 个单元格具有相同的 indexPath

override func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? 
   print(indexPath.row)

   if indexPath.row != 0 
     return indexPath
   

   return nil

【问题讨论】:

【参考方案1】:

您似乎忽略了indexPath.section。部分和行的组合唯一地定义了索引路径。行在其部分内是唯一的。

【讨论】:

【参考方案2】:

NSIndexPathrowsection组成,sectionrow的组合是唯一的 在您的情况下,Cell1 具有 indexPath.section == 0indexPath.row == 0 Cell2 有indexPath.section == 1indexPath.row == 0

【讨论】:

那么例如对于Cell2,我应该使用if indexPath.section == 1 && if indexPath.section == 0 吗? 仅供参考 - NSIndexPathsectionrow 实际上是 UITableView 提供的扩展。 UICollectionView 添加了 sectionitem。原来的NSIndexPath 没有这样的属性。它只有一组索引。 @senty 是的,对于 Cell2,它将是第 1 节,第 0 行。

以上是关于IndexPath.row 对于静态单元格不是唯一的的主要内容,如果未能解决你的问题,请参考以下文章

UTableView 当前可见单元格 indexPath.row

如何在特定 indexpath.row 上显示自定义 tableviewcell

根据所选的 indexpath.row 更改 UICollectionView 单元格图像视图

UICollectionViewCell 未在 indexpath.row == 0 上绘制单元格

Swift 5. 从第二个表格视图单元格(第二个 indexpath.row )显示数组

indexPath.row 返回最后一个可见单元格,并且没有调用 didSelectRowAtIndexPath