我问这个是因为我发现heightForRowAtIndexPath
首先使用tableView中的最后一个单元格,这很奇怪。
这是我得到的,我有13个部分,每个部分只有一个单元格。因此,当我调用reloadData
并在indexPath.section
中记录heightForRowAtIndexPath
时,最后一部分的indexPath被打印出来。然后它从第0部分开始,然后依次为1,2,3,直到11。
这是在设备和设备上测试的。模拟器和iOS 7& iOS 8。
这是固定订单还是仅适用于我测试的情况?
答案 0 :(得分:0)
Apple未指定调用-tableView:heightForRowAtIndexPath:
的顺序。
这意味着您不能依赖任何特定订单。当您调用-endUpdates
或任何重新加载/插入/删除/移动方法时,将重新计算行高。 UITableView
可以利用特殊知识(如当前可见的单元格)并以不同的顺序重新计算行高。
更糟糕的是,即使您在每台Apple设备上测试每个版本的iOS并且每次都获得完全相同的订单,下一个版本的发布也可能会改变它。
答案 1 :(得分:0)
如果您使用的是AutoLayout。正确修复约束。他们可能会有所作为。在iOS *中,您甚至不必使用-tableView:heightForRowAtIndexPath:
。