在 iOS 7 中的 cellForRowAtIndexPath 之后不调用 heightForRowAtIndexPath

Posted

技术标签:

【中文标题】在 iOS 7 中的 cellForRowAtIndexPath 之后不调用 heightForRowAtIndexPath【英文标题】:heightForRowAtIndexPath is not called after cellForRowAtIndexPath in iOS 7 【发布时间】:2015-03-08 20:54:08 【问题描述】:

我有一个分组的UITableView,其单元格的内容是动态的。我需要在cellForRowAtIndexPath: 方法中计算每个单元格所需的实际高度。我正在 ios 7 和 iOS 8 设备上进行测试,我发现在 iOS 8 中,当 cellForRowAtIndexPath: 返回时调用方法 heightForRowAtIndexPath:(然后,我更新了单元格的高度),但它没有被调用iOS 7(因此所有单元格的高度始终相同)。

我无法找到解决此问题的方法...请有人帮助我吗?

提前致谢

【问题讨论】:

【参考方案1】:

你的前提是错误的。如果您正确地执行此操作,那么在 iOS 7 和 iOS 8 中(事实上,在这之前的所有系统中),heightForRowAtIndexPath: 在您调用cellForRowAtIndexPath: 之前被调用。一般来说,每行都会调用heightForRowAtIndexPath:之前第一次调用cellForRowAtIndexPath:。这样,表格在开始生成单元格之前就有足够的布局信息。

如果您发现行为有所不同,可能是因为您还使用了estimatedRowHeight,它在 iOS 8 和 iOS 7 中的行为确实不同。所以简单的解决方案是:不要那样做。

【讨论】:

以上是关于在 iOS 7 中的 cellForRowAtIndexPath 之后不调用 heightForRowAtIndexPath的主要内容,如果未能解决你的问题,请参考以下文章

故事板中的自定义表格视图单元格布局似乎无效

多行 UILabel 有时会完全显示,有时会被切断

PhoneGap:iOS 7 中的 UIPickerView 不会像在 iOS 6 中那样自动调整字体大小。关于如何在 iOS 7 中实现的任何解决方案?

iOS 6 + 7 中的 iOS 隐藏状态栏和标签栏

UITableView 在 IOS 7 与 IOS 6 中的行为不同

ios 7 中的区域监控