0

Cocoaアプリケーションでテーブルビューを使用しています。ダブルクリックアクションを設定して、発生時に次の方法を実行します。

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

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

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

4

1 に答える 1

2

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

于 2009-03-25T23:48:06.180 に答える