【发布时间】:2014-10-15 16:29:18
【问题描述】:
我刚刚下载了 Xcode6 Beta6,发现我的 App 有一些奇怪的缺陷。经过一些初步调试后,我发现heightForRowAtIndexPath 被多次调用,并造成了一些不良影响。
通常,我希望 heightForRowAtIndexPath 被调用的次数比我显示的行多 2 次。因此,当我硬编码 numberOfRowsInSection 以返回 3 时,我应该会看到 heightForRowAtIndexPath 被调用 5 次。在 iOS 7 中就是这种情况,但是当我在 Xcode6 Beta6 中进行测试时,我看到 heightForRowAtIndexPath 被调用了 7 次。当我返回 4 时,该方法被称为 9、5 和它的 11。所以看起来模式是我硬编码的行数 + 1 的两倍。
有没有其他人遇到过这个问题或找到了解决方法?仅仅能够确认这是一个 iOS 错误将是一个巨大的帮助,因为这样我就可以将这个缺陷推迟到以后,因为 Apple 可能会自行解决这个问题。
编辑:这个问题在 Xcode 6 GM 中仍然存在
编辑 2:Apple 回复并关闭了我的错误报告,这里有回复:
委托的 API 约定是我们可以随意调用此方法。
我想我们只需要处理这个问题,并且应该编写不依赖于调用此委托的确切时间。
【问题讨论】:
-
那太棒了!
-
可能值得filing a radar。
-
即使在 Beta 7 上我也遇到了同样的问题
-
@MrTJ 我遇到了同样的问题,但这不是我上面描述的。在 iOS 8 表格行中,默认情况下会自行调整大小以适应其中的内容。在他们使用默认大小 44 之前,我将 tableView.rowHeight = 44 设置为它们对我来说再次显得正常。同样对于上述问题,我仍然在 GM 中看到这种情况,可能只是一种新的处理方式,我必须创建一个没有像以前一样使用 heightForRow 的解决方法..
-
@instaable 抱歉,我刚刚找到了针对我的问题的解决方法。我正在使用此方法来切换全局属性并根据该变量状态更改单元格的高度。我改为将全局属性更改为存储在每个自定义单元格对象中。因此,heightForRow 是否被额外调用并不重要。
标签: xcode uitableview ios8