Cocoa 重新排序NSTableView时处理选定行

Cocoa 重新排序NSTableView时处理选定行,cocoa,nstableview,hig,Cocoa,Nstableview,Hig,这是一个关于NSTableView的UI行为最佳实践的问题 我有一个NSTableView,它的内容会偶尔刷新。用户可以在表中选择无行、一行或多行。刷新数据时,可以删除或重新排序某些行。NSTableView的默认行为似乎是保持相同的行索引处于选中状态,无论数据如何重新排序(我理解这种行为,因为NSTableView如何知道行移动到何处?) 我可以更改此行为,在重新加载数据后修改选择,以便用户的原始选择保持选中状态,即使它们已移动。这将更改所选的行索引,因此也可能会对用户造成干扰 苹果对这种情况

这是一个关于NSTableView的UI行为最佳实践的问题

我有一个NSTableView,它的内容会偶尔刷新。用户可以在表中选择无行、一行或多行。刷新数据时,可以删除或重新排序某些行。NSTableView的默认行为似乎是保持相同的行索引处于选中状态,无论数据如何重新排序(我理解这种行为,因为NSTableView如何知道行移动到何处?)

我可以更改此行为,在重新加载数据后修改选择,以便用户的原始选择保持选中状态,即使它们已移动。这将更改所选的行索引,因此也可能会对用户造成干扰


苹果对这种情况有什么要说的吗?还是有一种标准行为?

我在HIG中找不到任何东西,但是
NSArrayController
文档和“保留选择”部分的文档表明默认行为是在内容更改时保留选择


另请参阅文档。

我检查了iTunes的行为,它会在重新使用数据后保留用户选择的项目,因此我倾向于积极维护用户的选择。我发现的另一个类似的应用是数字。当您选择一行,然后按列排序时,将保留您的选择。