获取 UITableView 中的第一行,其中未知数量的第一部分为空

Posted

技术标签:

【中文标题】获取 UITableView 中的第一行,其中未知数量的第一部分为空【英文标题】:Get first row in UITableView where unknown number of first sections are empty 【发布时间】:2016-09-15 23:09:43 【问题描述】:

在这些条件下,我需要 tableview 中第一行的索引路径:

    第一行可能不在屏幕上,因此不在对返回可见行数组的方法的调用中。

    第一行的节未知,可能大于 0,节的总数是可变的。这是由于前面的部分返回 0 到 [UITableViewDataSource numberOfRowsInSection:] 调用。

我可以循环浏览每个部分以查找行,但想知道 UITableView 是否有更好的方法来做到这一点?

【问题讨论】:

这个很不清楚。你到底在找哪一行?什么if 语句会匹配该行? tabieview 中的第一行。棘手的部分是第一行可能在也可能不在第 0 节中。它可能在第 20 节或第 54 节中,或者在 tableview 中的节数中的任何数字。 这仍然没有意义。表格视图中的第一行怎么可能不是第 0 行第 0 行? “第一行”的唯一其他可能定义是最上面的可见行,但这似乎也不是您想要的。 如果您将 0 返回到部分中的行数,则该部分的 tableview 中不会出现任何行。如果第 0 部分发生这种情况,则第 0 行第 0 部分的 tableview 中没有行。这就是问题的本质。如果0,0处没有行但表中有行,如何找到第一行? 啊哈。现在你已经描述了这个问题。您需要表格视图中第一部分的行的 indexPath,其中包含 1 行或更多行。 【参考方案1】:

根据 cmets,您似乎想知道表视图第一部分中具有 1 行或更多行的行的索引路径。

您唯一的选择是逐节遍历您的数据源,直到该节中有 1 行或更多行。然后所需的行将具有第 0 行的 indexPath 和您刚刚找到的部分。

没有通过表格视图获取此信息的快捷方式。

虽然有一个可能的快捷方式,但它要求您的表格视图使用“普通”样式(而不是“分组”),并且您的表格视图不能有任何部分的页眉或页脚视图。如果所有这些都是真的,您可以使用UITableView indexPathForRowAtPoint: 获取所需行的indexPath 并传入CGPointMake(5, 5)。这将给出整个表格视图中最顶行的索引路径。

【讨论】:

以上是关于获取 UITableView 中的第一行,其中未知数量的第一部分为空的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 的第一行不同

子视图覆盖了 UITableView 的第一行

Swift UITableView - 在 UITalbleVIew 上自定义第一行

UITableview 选择行按钮应取消选择另一行中的相同位置

将 UITableView 的标题更改为 iOS 中的单元格名称

删除 UItableView Cell 的第一行分隔符