0

我问这个是因为我发现heightForRowAtIndexPath首先使用 tableView 中的最后一个单元格很奇怪。

这是我得到的,我有 13 个部分,每个部分只有一个单元格。所以当我打电话reloadData并登录indexPath.sectionheightForRowAtIndexPath,最后一节的 indexPath 被打印出来了。然后它从第 0 部分开始,然后依次是 1、2、3,直到 11。

这在设备和模拟器以及 iOS 7 和 iOS 8 上都进行了测试。

这是固定顺序还是仅适用于我测试的情况?

4

2 回答 2

0

Apple 没有指定-tableView:heightForRowAtIndexPath:调用的顺序。

这意味着您不能依赖任何特定的订单。当您调用-endUpdates或任何 reload/insert/delete/move 方法时,将重新计算行高。UITableView可以利用特殊知识(如当前可见的单元格)并以不同的顺序重新计算行高。

更糟糕的是,即使您在每台 Apple 设备上测试每个版本的 iOS 并且每次都获得完全相同的订单,下一个版本可能会改变它。

于 2014-12-23T06:04:05.250 回答
0

如果您使用的是 AutoLayout 。正确修复约束。他们可能会有所作为。在 iOS * 中,您甚至不必使用-tableView:heightForRowAtIndexPath:.

于 2014-12-23T06:34:18.780 回答