indexPath.row 在 tableView didSelectRowAtIndexPath 中返回 null

Posted

技术标签:

【中文标题】indexPath.row 在 tableView didSelectRowAtIndexPath 中返回 null【英文标题】:indexPath.row is returning null in tableView didSelectRowAtIndexPath 【发布时间】:2009-07-24 15:20:06 【问题描述】:

indexPath.row 在 tableView 中返回 null didSelectRowAtIndexPath:indexPath

我认为它应该返回选定的行。

当我在调试器中查看 indexPath 时,它(正确)返回:“2 个索引 [0, 0]”

我错过了什么吗?

【问题讨论】:

【参考方案1】:

好吧null 0row 属性是 int 类型——也许你错误地将它用作对象或指针。

您提到您想要选择的实际“行”。如果您的意思是想要选中的 单元格,方法如下:

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];

请注意,如果您以某种方式以编程方式选择当前不可见的行,这将返回 nil

【讨论】:

【参考方案2】:

indexPath.section 告诉您它要求的部分。

indexPath.row 告诉您它想要该部分中的哪一行。

都从 0 开始。

你想做这样的事情:

if (indexPath.section == 0)      // 1st section
    if (indexPath.row ==  0) return cell1;
    if (indexPath.row ==  1) return cell2;
    if (indexPath.row ==  2) return cell3;
 else if (indexPath.section == 1)      // 2nd section
    if (indexPath.row ==  0) return cell4;
    if (indexPath.row ==  1) return cell5;
    if (indexPath.row ==  2) return cell6;

return nil;

【讨论】:

【参考方案3】:

它将路径返回到所选行,而不是行(或单元格)本身。

indexPath(0,0) 是第一部分的第一个单元格。根据您正在运行的测试,这可能是正确的结果。

【讨论】:

以上是关于indexPath.row 在 tableView didSelectRowAtIndexPath 中返回 null的主要内容,如果未能解决你的问题,请参考以下文章

indexpath.row 在tableView heightForRowAt 3 后重置

如何获取当前正在显示的tableView的indexPath.row?

如何从扩展的 collectionview 到达 tableview 的 indexpath.row?

(SWIFT 4)如何计算 tableview 中列 indexpath.row 的总和?

Swift 4.2 - 如何从 tableView 中的“didSelectRowAtIndexPath”方法调用“indexPath.row”到另一个类?

从 TableView Objective C 中获取 IndexPath.Row [重复]