调用heightForRowAtIndexPath的顺序是什么?

时间:2014-12-23 05:30:32

标签: ios uitableview heightforrowatindexpath

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

这是我得到的,我有13个部分,每个部分只有一个单元格。因此,当我调用reloadData并在indexPath.section中记录heightForRowAtIndexPath时,最后一部分的indexPath被打印出来。然后它从第0部分开始,然后依次为1,2,3,直到11。

这是在设备和设备上测试的。模拟器和iOS 7& iOS 8。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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