Ios indexpath.row从1开始,而不是从0开始

Ios indexpath.row从1开始,而不是从0开始,ios,uitableview,nsindexpath,Ios,Uitableview,Nsindexpath,我正以一种合理的观点面对一个棘手的问题。 有时,当我的表的datasource/numberofrowsinsection有3个值时,CellForOwatineXpath从0-1开始,而不是从0-0开始。 有人能帮我找出这个问题发生的可能原因吗。 甚至尝试打印日志,但日志显示为0-1和0-2,而不是0-0。 这意味着不会为第一行(即0-0)调用它。tableView:cellForRowAtIndexPath:会根据需要调用以显示单元格,如果不显示单元格,则不会调用它。如果未显示行0,则不会调

我正以一种合理的观点面对一个棘手的问题。 有时,当我的表的datasource/numberofrowsinsection有3个值时,CellForOwatineXpath从0-1开始,而不是从0-0开始。 有人能帮我找出这个问题发生的可能原因吗。 甚至尝试打印日志,但日志显示为0-1和0-2,而不是0-0。
这意味着不会为第一行(即0-0)调用它。

tableView:cellForRowAtIndexPath:会根据需要调用以显示单元格,如果不显示单元格,则不会调用它。如果未显示行0,则不会调用部分单元格0-0。

如Zaph所述,
表格视图:cellForRowAtIndexPath:
在表格希望显示给定索引路径的单元格时被调用,因此如果您从未获得一行为0的索引路径,这意味着你可能正在做一些事情,以防止细胞显示

我的第一个建议是调查您的
tableView:heightforrowatinexpath:
方法,1)检查是否使用索引路径行0调用它,2)确保返回了大于0的内容


事实上,您仅在iOS 8上看到它并不一定意味着某些本机内容已被破坏,而是可能表明您对上述方法的某些逻辑受到iOS 8更改的影响。iOS 8抛弃了我计算文本大小的方式,因此可能有一些不太明显的情况导致返回的高度不大于0。

您可以先检查节数和行数。如果节的行号返回0,则不会调用该节。

在我的示例中,我已经在类中编写了方法estimatedHeightForRowAt方法。当我评论该方法时,代码运行良好

func tableView(tableView:UITableView,估计重量为 indepath:indepath)->CGFloat{

}


我已经从代码中删除了上述方法。这节省了我的时间:)

放置委托方法,您尝试了什么?问题出在哪里?只有当您尝试使用ReloadRowsAndExpaths部分加载表时才会发生这种情况:withRowAnimatio或直接加载任何节。但在numberofrowsinsection中,我将值传递为3,那么它是如何直接跳到1而不是从0开始的呢?令我惊讶的是,它发生在iOS8中,而不是iOS7中。但我认为这不应该是一个问题,这只是一个猜测。是的,我同意扎夫,但是表视图能够显示三个单元格,关键是不需要调用任何方法,如reloadRowsatIndexpath,当表能够显示所有三个单元格时,它会跳过0并直接移动到1。正如我前面提到的,这个问题发生在ios8设备中,而不是ios7中:(是的,对于同一段代码,我在ios8中只能看到2行,在ios7中只能看到3行。更改RowAtIndexPath的高度为我解决了这个问题,谢谢!