4

我有一个要排序的 NSTableView。数据源是一个 NSMutableArray,其中包含自定义类的实例。

-(void)tableView:(NSTableView *)tableView sortDescriptorsDidChange: (NSArray *)oldDescriptors 

我正在使用上述内容,以便我可以跟踪用户何时按下表格的标题。我正在使用以下方法进行排序:

NSSortDescriptor *sortDescriptor;
sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"make" ascending:bool_asc_desc] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSArray *sortedArray;
sortedArray = [ads_printers_array sortedArrayUsingDescriptors:sortDescriptors];

我想知道的是如何传递被按下的表格列?这将允许我更改 initWithKey:@"make" (使用 if 语句),以便我可以根据单击的标题进行排序。

谢谢。

PS我尝试了以下方法:

if ([ads_rdp_driver_table selectedColumn] == tc_make)

ads_rdp_driver_table 是我的 NSTableView,tc_make 是我定义的 NSTableColumn。但是,我收到此错误:

ISO C++ 禁止指针和整数之间的比较

如果我能找出错误,我想这可能会起作用。

4

1 回答 1

3

NSTableView的selectedColumn方法返回所选列的索引(不是指向它的指针),这就是您收到编译错误的原因。要获得实际的列,请尝试这样的事情(代码我包含错误,我逐字输入):

NSTableColumn * selectedColumn = (NSTableColumn *)[[tableView tableColumns] objectAtIndex: [tableView selectedColumn]];
NSLog(@"Column identifier: %@", [selectedColumn identifier]);
于 2012-05-30T11:24:04.203 回答