Objective c 延迟加载表视图时出现的问题
我在尝试懒洋洋地填充Objective c 延迟加载表视图时出现的问题,objective-c,macos,cocoa,nstableview,nsarraycontroller,Objective C,Macos,Cocoa,Nstableview,Nsarraycontroller,我在尝试懒洋洋地填充nestableview时遇到了一个严重的问题。下面是我的方法 我创建了一个自定义类PRIList,其中有一个数组实例来管理模型。 我已经将priList.items绑定到xib中的数组控制器,其中items不是priList中的实例,但为了支持延迟加载,我实现了方法countOfItems和objectinemsatindex: 最初,当我填充PRIList时,我用有效对象填充了几个对象(比如50个),其余的则是错误的对象。在objectinemsatindex中,我检查特
nestableview
时遇到了一个严重的问题。下面是我的方法
我创建了一个自定义类PRIList
,其中有一个数组实例来管理模型。
我已经将priList.items绑定到xib
中的数组控制器,其中items不是priList
中的实例,但为了支持延迟加载,我实现了方法countOfItems
和objectinemsatindex:
最初,当我填充PRIList
时,我用有效对象填充了几个对象(比如50个),其余的则是错误的对象。在objectinemsatindex
中,我检查特定索引中的项目是否有效或错误。如果它有故障,我将取下一组50个对象
我的理解是,NSArrayController
只为表视图中可见的行调用方法objectinemsatindex
。但是这里的问题是,只要设置了PRIList,就会为所有对象调用objectinemsatindex
方法。甚至在表视图中更改某些选择时也会调用此方法(堆栈跟踪显示此方法是从[\u NSModelObservingTracker startObservingModelObjectAtReferenceIndex]
调用的)
基本上,每当用户在表视图中向下滚动时,我都希望获取记录
我在Lion的另一个项目中采用了相同的方法。它在那里奏效了。目前我在小牛队
我尝试在自定义表视图中覆盖isCompatibleWithResponsiveScrolling
,并将其返回到NO。仍然没有成功
非常感谢您的帮助。首先,您是否分配或绑定了阵列控制器的排序描述符?或设置任何列以自动生成排序描述符?(我不确定后者是否相关。这取决于默认情况下是否对列进行排序。) 在任何情况下,如果阵列控制器认为需要对对象进行排序以排列对象,则需要加载所有内容。我的印象是,不管怎样,它总是这样,尽管你报告说它是有效的
对于这样的问题,我建议您使用完全手动控制。这意味着不使用绑定或数组控制器。使用数据源。我已从xib中解除了创建排序描述符的绑定,并注释掉了相同的代码。还是一样的问题。