我在Cocoa应用程序中使用表视图。我已设置双击操作以在发生时执行以下方法:
- (void)doubleClickInTable:(id)sender {
int rowIndex = [sender selectedRow];
if (rowIndex != -1) {
[userEditController setData:[[self users] objectAtIndex:rowIndex]];
[self showUserEditPanel];
}
}
如您所见,EditController接收正在编辑的对象。此对象是位于源数组的rowIndex的对象。这在大多数情况下都能正常工作,但是一旦我开始测试排序,就会设置错误的对象。这是因为表中单击行的索引与源数组不同,因为排序会移动行。
如何解决此问题?
答案 0 :(得分:2)
您可以使用相同的排序描述符创建排序数组,并在rowIndex
中检索该对象。另一方面,如果您正在使用数组控制器,那么将在控制器的arrangedObjects
数组中检索该对象,该数组已经排序(因此名称)。