Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone iOS-双列表布局_Iphone_Cocoa Touch_Ios4 - Fatal编程技术网

Iphone iOS-双列表布局

Iphone iOS-双列表布局,iphone,cocoa-touch,ios4,Iphone,Cocoa Touch,Ios4,我正在开发一个iOS应用程序,在决定如何解决问题时遇到了一些问题 我使用两个UITableViewController来显示相同数据的不同视图。一个是主列表,另一个只包含标记为“收藏夹”的项目。此外,这些项目的高度是可变的,因此我使用“HeightForRowatineXpath”来表示每个项目的高度。问题是速度,当我从一个视图切换到另一个视图时,它需要更新以显示在另一个视图中所做的更改(标记为Favorite/Favorite) 解决方案#1: 每次表格视图可见时重新加载数据。这并不能很好地工

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

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

解决方案#1:

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

解决方案#2:

进行更改时手动操作表。我还没有试过这个,但它可能有问题。你的想法

解决方案#3:

使用通知类型系统通知其他表当前可能加载的项的更新。我没有尝试过这个,因为它似乎有些过头,可能根本不起作用


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

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


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

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


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

确实如此(void)重新加载rowsatindexpaths:(NSArray*)带rowsanimation的inexpaths:(uitableviewrowsanimation)animation是的,rowsatindexpaths的高度非常慢,但我只是认为应用程序在相同大小的行上看起来不太合适。加快速度的唯一选择是,在NIB加载时,序列化表视图并反序列化它。不确定这是否可能,但这是一个想法。@Nippysaurus:很抱歉这么晚才发表评论。我不知道还有什么其他方法可以加快速度。(反)序列化tableview是什么意思?@Nick:如果你不熟悉序列化,维基百科的定义:在计算机科学中,在数据存储和传输的上下文中,序列化是将数据结构或对象转换为位序列的过程,以便可以将其存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一或另一计算机环境中“恢复”。“@Nippysaurus序列化视图是什么意思?你打算连载什么?真的(void)重新加载rowsatindexpaths:(NSArray*)带rowsanimation的inexpaths:(uitableviewrowsanimation)animation是的,rowsatindexpaths的高度非常慢,但我只是认为应用程序在相同大小的行上看起来不太合适。加快速度的唯一选择是,在NIB加载时,序列化表视图并反序列化它。不确定这是否可能,但这是一个想法。@Nippysaurus:很抱歉这么晚才发表评论。我不知道还有什么其他方法可以加快速度。(反)序列化tableview是什么意思?@Nick:如果你不熟悉序列化,维基百科的定义:在计算机科学中,在数据存储和传输的上下文中,序列化是将数据结构或对象转换为位序列的过程,以便可以将其存储在文件或内存缓冲区中,或通过网络连接链路传输,以便稍后在同一或另一计算机环境中“恢复”。“@Nippysaurus序列化视图是什么意思?你打算连载什么?