在我试图填充nestableview lazily
的问题上,我感到非常震惊。以下是我的方法。
我创建了一个自定义类PRIList
,其中有一个数组实例来管理模型。
我已将priList.items绑定到xib
中的数组控制器,其中items不是PRIList
中的实例,但为了支持延迟加载,我实现了方法countOfItems
和{{1} }。
最初,当我填充objectInItemsAtIndex:
时,我使用有效对象填充少量对象(比如50)并使用有缺陷的对象进行休息。在PRIList
中,我检查特定索引处的项是有效还是有缺陷。如果它有问题,我会获取下一组50个对象。
据我所知,objectInItemsAtIndex
仅对表格视图中的可见行调用方法NSArrayController
。但问题是,只要设置PRIList,就会为所有对象调用objectInItemsAtIndex
方法。在表视图中更改某些选择时甚至会调用此方法(堆栈跟踪显示此方法是从objectInItemsAtIndex
调用的)
基本上我想在用户在表格视图中向下滚动时获取记录。
我在Lion的另一个项目中采用了相同的方法。它在那里工作。目前我在小牛队。
我尝试覆盖自定义表视图中的[_NSModelObservingTracker startObservingModelObjectAtReferenceIndex]
并将其返回到NO。仍然没有运气。
非常感谢任何帮助。
答案 0 :(得分:0)
首先,您是否已分配或绑定阵列控制器的排序描述符?或者设置任何列以自动生成排序描述符? (我不确定后者是否相关。这取决于列是否默认排序。)
在任何情况下,如果数组控制器感觉需要对对象进行排序以排列对象,那么它将需要加载所有内容。无论如何,我的印象是它始终如此,尽管你报告它有效。
对于这样的问题,我建议您进行全面的手动控制。这意味着不使用绑定或数组控制器。使用数据源。