2

ビアとにNSTableViewバインドされています。これまでのところすべて素晴らしい-コンテンツが表示されるなど。NSArrayControllercontentselection indexes

ここに画像の説明を入力してください

これで、anは、検索対象の配列コンテンツインスタンスのプロパティをNSSearchField介して配列コントローラーにバインドされます。 テーブルビューの検索/フィルタリングはうまく機能します。一致するエントリのみを表示するテーブルビュー。filterPredicate

ただしNSTableView、既存の選択が検索結果にない場合、検索は選択をリセットします。さらに悪いことに、検索中だけでなく、検索の終了後も、テーブルビューに選択がありません。

は、空の選択NSArrayControllerを回避するように設定されています。

それでも、アレイコントローラのデバッグは、検索によってそれらが空のセットにリセットされることをselection indexes示しています。それをどうすればいいのかよくわからない。

このシナリオでバインディングを適切に構成して、空の選択を実際に防ぐ方法に関するヒントはありがたいです。

4

1 に答える 1

3

残念ながら、アレイコントローラは、配置されたオブジェクトが変更されても、選択を追跡および復元しません。これはコードで自分で行う必要があります。KVOを使用してアレイコントローラで選択を監視することにより、現在の選択を追跡できます。また、コントローラーの配置されたオブジェクトを観察して、フィルタリングの結果としていつ変更されるかを知ることもできます。変更するたびに、現在の選択を追跡された値に戻すか(配置されたオブジェクトにまだあると想定)、選択を新しい値に設定します。

于 2012-10-06T12:30:51.260 に答える