1

我有一个 NSTableView,它显示(通过绑定)来自 NSTreeController 的数据。应用程序经常将数据附加/更改到绑定数组中。

问题是,如果用户在表格中选择了一行,但滚动后选择的数据不再可见,当应用程序更新数组时,它会导致显示自动滚动,以便再次显示选定的行在屏幕上。这对用户来说非常令人沮丧,特别是因为新数据可以随时到达。

有没有办法禁用这个功能?

4

2 回答 2

2

您可能必须继承NSTableView和覆盖-scrollRowToVisible:,暂时将调用括起来super。这可能还需要在您的子类中使用自定义 BOOL ivar 来跟踪您是否要滚动。

我会先在那里设置一个断点,看看何时触发了自动滚动。这应该有助于找到切换 ivar 的合适时机。

于 2010-01-11T13:08:32.533 回答
0

您使用的是NSTreeControllerwith anNSOutlineView还是 an NSArrayControllerwith an NSTableViewNSTreeController与 an 一起使用NSTableView对我来说没有多大意义?

如果您使用的是 an ,NSTableView您可能应该使用 anNSArrayController来管理其数据,并且这种重新排列行是NSArrayController. 尝试在 IB 中关闭控制器上的自动重新排列内容选项。

当它打开时,数组控制器将在添加、删除和更改对象时重新排列其对象,这些对象会影响排序顺序(如果有)并导致任何表视图或大纲视图重新加载其数据。

我不知道类似的功能NSTreeController主要是因为我不使用它,因为它对我来说从来都不是很好用。遗憾的是,我建议只使用数据源方法,NSOutlineView并以老式方式提供数据。以我的经验,NSTreeController它只适合最琐碎的任务。

于 2010-01-12T07:20:49.980 回答