1

在 iOS 7 上运行时,用于平滑重新加载部分和行的 tableview 现在很慢。当我重新加载整个 tableview 表时,会立即加载,但调用 reloadRowsAtIndexPaths 或 reloadSections(使用 UITableViewRowAnimationNone)大约需要一秒钟才能完成。

我还没有在应用程序的这一部分使用 AutoLayout。单元格布局在具有相应自定义类的单独 Xib 文件中

4

1 回答 1

1

您是否为单元格视图启用了自动布局?您是否在不可见时重新加载表视图(例如,当推送详细视图控制器时)?这似乎是一个已知的错误。请参阅此问题/答案。苹果错误报告:rdar://15175803

基本上,你有一个多层次的解决方案,它并不完美,但会给你满意的结果。首先,这始终是正确的,优化表格视图单元格中的约束。如果您动态修改了约束,请确保您不会导致不必要的布局和绘图。其次,如果表格视图不可见,请不要更新它。这感觉像是一种 hack,但没有其他选择(嗯,有一个,但它涉及禁用自动布局,这根本不是最佳选择,所以让我们忽略)。tableView.window如果属性为,您可以在视图控制器中进行测试nil,这表明表格视图已隐藏。如果不是隐藏的,则正常更新,如果是,则不要更新。只需设置一个表已更新的标志。viewWillAppear:随叫随到_reloadData更新表。您可以通过在表视图中查询选定的索引路径并在重新加载数据后再次选择它们来保留选择。

于 2013-11-09T00:55:59.500 回答