UITableViewDataSource:titleForHeaderInSection调用不可见的部分

时间:2013-11-15 08:38:16

标签: uitableview core-data

我想显示一个很长的列表元素,分为大约580个部分。当我打开UITableViewController时,它需要一两秒钟(在iPhone 5上)来加载控制器。从检测代码中我了解到,我为每个部分的标题执行的字符串操作会延迟表的显示。如果返回一个常量字符串,它的执行速度会更快。

  • 问题1:为什么UITableView会提前构建所有节头,另一方面它试图通过懒惰地渲染单元来减少负载?
  • 问题2:我该怎么办?有没有办法告诉UITableView不这样做,还是你自己将标题存储在Core Data中?我将日期显示为部分标题,因此将它们存储为字符串可能不明智,因为它们取决于位置,夏令时,语言等。

1 个答案:

答案 0 :(得分:0)

从您的问题(“在核心数据中存储标题?”)我收集到您没有将部分标题存储在Core Data中。大概是你在内存等中使用了一些数组,因此无论表视图数据源方法是什么,你都必须计算所有500个字符串。

相反,您应该使用完全优化的NSFetchedResultsController。在创建它时给它一个适当的sectionNameKeyPath,你会发现你的表视图会快速加载。