我这样问是因为我觉得奇怪的是heightForRowAtIndexPath
首先处理我的tableView中的最后一个单元格。
这是我得到的,我有13个部分,每个部分只有一个单元格。因此,当我调用reloadData
并在heightForRowAtIndexPath
中记录indexPath.section
时,最后一节的indexPath被打印出来。然后按顺序从0开始,然后是1,2,3,直到11。
这在设备和模拟器以及iOS 7和iOS 8上都进行了测试。
这是固定的顺序,还是仅适用于我测试的情况?
发布于 2014-12-23 06:04:05
苹果没有指定调用-tableView:heightForRowAtIndexPath:
的顺序。
这意味着你不能依赖于任何特定的顺序。当您调用-endUpdates
或任何reload/insert/delete/move方法时,将重新计算行高。UITableView
可能会利用特殊知识(如当前可见的单元格),并以不同的顺序重新计算行高。
更糟糕的是,即使你在每台苹果设备上测试每个版本的iOS,每次都得到完全相同的顺序,下一次发布可能会改变这一点。
发布于 2014-12-23 06:34:19
如果您使用的是AutoLayout。正确修复约束。他们可能会让情况有所不同。在iOS *中,你甚至不需要使用-tableView:heightForRowAtIndexPath:
。
https://stackoverflow.com/questions/27614581
复制