0

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

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

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

我该如何解决这个问题?

4

1 回答 1

2

您可以使用相同的排序描述符创建一个排序数组,并rowIndex在其中检索对象。另一种方法是,如果您使用的是数组控制器,则可以检索控制器arrangedObjects数组中该索引处的对象,该数组已经排序(因此得名)。

于 2009-03-25T23:48:06.180 回答