indexpath.row从1开始而不是0

时间:2014-10-21 12:16:22

标签: ios uitableview nsindexpath

我正面临一个与uitableview相关的问题。 有时当我的表的数据源/ numberofrowsinsection有3个值时,cellforowatindexpath从0-1而不是0-0开始。 有人可以帮助我找出这个问题发生的可能原因。 甚至尝试打印日志,但日志显示为0 -1和0 -2但不是0 -0。 这意味着它不会被调用第一行,即0 -0。

4 个答案:

答案 0 :(得分:5)

根据需要调用

tableView:cellForRowAtIndexPath:来显示单元格,如果不显示单元格则不调用它。如果没有显示第0行,则不会调用section-cell 0-0。

答案 1 :(得分:3)

就像Zaph所说的那样,每当一个表想要显示给定索引路径的单元格时,就会调用tableView:cellForRowAtIndexPath:,所以如果你没有得到一行0的索引路径,那就意味着你& #39;可能会做一些阻止该单元显示的东西。

我的第一个建议是调查您的tableView:heightForRowAtIndexPath:方法,1)检查是否使用索引路径行0调用它,并且2)确保某些内容>正在返回0。

您在iOS 8上看到它的事实并不一定意味着本机被破坏,但可能会建议您的一些有助于上述方法的逻辑受到iOS 8更改的影响。 iOS 8已经抛弃了我进行文本大小计算的方式,所以也许那些不太明显的东西会导致返回不高于0的高度。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

在我的情况下起作用的是我在类中编写了EstimatedHeightForRowAt方法。当我评论该方法时,代码工作正常。

  

func tableView(_ tableView:UITableView,EstimateHeightForRowAt   indexPath:IndexPath)-> CGFloat {

     

}

我从代码中删除了上述方法。它挽救了我的一天:)