【发布时间】:2012-04-23 10:52:34
【问题描述】:
在 iOS 上,NSTableView (UITableView) 会延迟加载,因为表格只显示当前视图所需的单元格,而不是更多。当用户向上或向下滚动时,会从数据源加载更多信息。
OSX 有类似的东西吗?我有一个 NSTableView 有 1000 多条记录要加载(+多列),这导致加载延迟以及向上或向下滚动时的延迟。
这种“延迟”加载会是一个好的解决方案(如果可能的话)吗?或者可能是类似的东西?
谢谢。
附:关于加载过程-我使用两种常用方法
-(id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
和
-(NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
加载数据。其中有 if 语句来检查一些变量,因为我有 2 个包含数据的组合框,当包含“ALL”和“ALL”时会加载这 1000 多条记录。如果组合框不是“ALL”和“ALL”,则只加载几条记录,加载正常。
鉴于您已经解释过延迟加载是自动完成的,我认为问题在于我正在从 XML 文件加载数据,因此解析可能会占用大量处理时间。
我虽然在运行时将 XML 文件中的数据加载到 NSDictionary 中,并将其保存在内存中,以便在需要时使用,这样我就可以避免实际需要显示信息时的加载时间。
你怎么看?谢谢!
【问题讨论】:
-
NSTableView内容确实是延迟加载的。您是通过数据源还是通过绑定提供数据?如果通过数据源,请发布您对objectValueForTableColumn: row:的实现。如果通过绑定,请查看访问器,看看它们中是否有比返回现有 ivar 更复杂的处理。 -
@Dondragmer 是完全正确的。
NSTableView不会延迟加载的唯一原因是您做错了什么。我们需要有关您如何填充表格视图的更多信息。 -
谢谢大家!我添加了一个 P.S.提供更多信息。
标签: objective-c cocoa nstableview