我有一个NSTableView,它显示(通过绑定)来自NSTreeController的数据。应用程序经常将数据附加/更改到绑定数组中。
问题在于,如果用户在表中选择了一行,但已滚动以使所选数据不再可见,则当应用程序更新阵列时,会导致显示自动滚动以便选定的行再一次在屏幕上。这很漂亮 令用户感到沮丧,特别是因为新数据可以随时到达。
有没有办法禁用此功能?
答案 0 :(得分:2)
您可能必须继承NSTableView
并覆盖-scrollRowToVisible:
,暂时将呼叫括在super
。这可能还需要子类中的自定义BOOL ivar来跟踪是否要滚动。
我首先在那里设置一个断点,看看何时触发了自动滚动。这应该有助于找到切换伊娃的适当时机。
答案 1 :(得分:0)
您使用NSTreeController
NSOutlineView
或NSArrayController
NSTableView
?使用带有NSTreeController
的{{1}}对我来说没有多大意义?
如果您使用的是NSTableView
,则可能应该使用NSTableView
来管理其数据,而这些行的重新排列是NSArrayController
的一项功能。尝试在IB中关闭控制器上的自动重新排列内容选项。
当它打开时,数组控制器将在添加,删除和更改对象时重新排列其对象,这些对象会影响排序顺序(如果有)并导致任何表视图或大纲视图重新加载其数据。
我不知道NSArrayController
的类似功能,主要是因为我不使用它,因为它对我来说从来没有用过。遗憾的是,我建议只使用NSTreeController
的数据源方法,并以老式的方式提供数据。根据我的经验,NSOutlineView
仅适用于最琐碎的任务。