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

selectedColumnNSTableViewのメソッドは、選択した列のインデックス (ポインターではなく) を返すため、コンパイル エラーが発生します。実際の列を取得するには、代わりに次のようなことを試してください (コードにはエラーが含まれています。逐語的に入力しています)。

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