iOS - 双列表布局

时间:2010-08-15 08:21:52

标签: iphone cocoa-touch ios4

我正在开发一个iOS应用程序,并且在决定如何解决问题时遇到了一些问题。

我使用两个UITableViewControllers来显示相同​​数据的不同视图。一个是主列表,另一个只包含标记为“收藏夹”的项目。这些项目也是可变高度,因此我使用“heightForRowAtIndexPath”来指示每个项目的高度。问题是速度,当我从一个视图切换到另一个视图时,需要更新它以显示在另一个视图中所做的更改(标记为喜欢/不喜欢)。

  

解决方案#1

     

每次表格视图可见时重新加载数据。这不能很好地工作,因为尽管使用延迟加载显示数据,但在加载任何数据之前,每个项都会调用“heightForRowAtIndexPath”,并且它的速度很慢。在我的iPhone 4上,大约300个项目的列表大约需要四秒钟加载,即使高度值被缓存(瓶颈是应用高度,而不是检索它)。

  

解决方案#2

     

进行更改时手动操作表。我没有试过这个,但它可能是错误的。你的想法?

  

解决方案#3

     

使用通知类型系统通知另一个表当前可能加载的项目的更新。我没有试过这个,因为它似乎超过顶部,可能根本不起作用。

有没有人知道显示相同数据的两个视图的简单方法?

1 个答案:

答案 0 :(得分:1)

您可以使用reloadRowsAtIndexPaths:withRowAnimation重新加载n行。我从来没有这样做,但我认为它存在,因为它更快,所以你可能想尝试一下。

在heightForRow:thingy,我记得在Apple文档中读到这个函数确实是性能的杀手。也许您可以获取行的最大高度,并在UITableView.rowHeight中设置它?