2009-03-25 11 views
0

私はCocoaアプリケーションでテーブルビューを使用しています。私はそれが発生したときに、以下の方法を行うには、ダブルクリックのアクションを設定している:NSTableViewソートが正しく行われないID

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

あなたが見ることができるように、EditControllerが編集されているオブジェクトを受け取ります。このオブジェクトは、ソース配列のrowIndexにあるオブジェクトです。これはほとんどの場合非常にうまく動作しますが、一度ソートをテストすると間違ったオブジェクトが設定されます。これは、テーブル内のクリックされた行のインデックスがソートを移動する行のためにソース配列と異なるためです。

この問題を解決するにはどうすればよいですか?

答えて

2

同じソート記述子を使用してソートされた配列を作成し、その中のオブジェクトをrowIndexで取得できます。もう1つの方法は、アレイコントローラを使用している場合は、コントローラのarrangedObjectsアレイ内のそのインデックスのオブジェクトを取得することです。アレイはすでにソートされています(したがってその名前)。

+0

NSArrayControllerをPeterの言及として使用することをお勧めします。 – sbooth

関連する問題