NSTableView排序没有得到正确的ID

时间:2009-03-25 21:32:54

标签: objective-c cocoa double-click

我在Cocoa应用程序中使用表视图。我已设置双击操作以在发生时执行以下方法:

- (void)doubleClickInTable:(id)sender {
      int rowIndex = [sender selectedRow];
      if (rowIndex != -1) {
        [userEditController setData:[[self users] objectAtIndex:rowIndex]];
        [self showUserEditPanel];
    }
}

如您所见,EditController接收正在编辑的对象。此对象是位于源数组的rowIndex的对象。这在大多数情况下都能正常工作,但是一旦我开始测试排序,就会设置错误的对象。这是因为表中单击行的索引与源数组不同,因为排序会移动行。

如何解决此问题?

1 个答案:

答案 0 :(得分:2)

您可以使用相同的排序描述符创建排序数组,并在rowIndex中检索该对象。另一方面,如果您正在使用数组控制器,那么将在控制器的arrangedObjects数组中检索该对象,该数组已经排序(因此名称)。