我有一个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语句),以便我可以根据单击的标题进行排序。
感谢。
P.S。我尝试过以下方法:
if ([ads_rdp_driver_table selectedColumn] == tc_make)
ads_rdp_driver_table是我的NSTableView,而tc_make是我定义的NSTableColumn。但是,我收到了这个错误:
ISO C ++禁止在指针和整数
之间进行比较我想如果我能找出错误,这可能会有用。
答案 0 :(得分:3)
NSTableView的selectedColumn
方法返回所选列的索引(不是指向它的指针),这就是您收到编译错误的原因。要获得实际列,请尝试这样的代码(代码我包含错误,我是逐字输入):
NSTableColumn * selectedColumn = (NSTableColumn *)[[tableView tableColumns] objectAtIndex: [tableView selectedColumn]];
NSLog(@"Column identifier: %@", [selectedColumn identifier]);