4

次のような可変辞書の可変配列を持つ単純なアプリケーションを試しています-

NSMutableDictionary *sample6 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"title6",@"title",[NSNumber numberWithBool:NO],@"state", nil];

IB では、NSButtonCell (チェック ボックス) を使用してテーブル ビューを作成しました。

次の表の列バインディングを使用して、チェックボックスの状態 (チェック済みまたはチェック解除済み) を表示できました。

Value - ArrayController.arrangedObjects.state

この場合、以下のスクリーンショットに示すように、「チェック」というタイトルのチェックボックスの配列が表示されます。

ここに画像の説明を入力

今私の目的は、バインディングを使用してチェックボックスのタイトルを表示し、その状態を取得しているのと同じ可変辞書から値を取得することです。

ボタンセルの次のバインディングを試しましたが、機能しませんでした:

タイトル -> ArrayController.selection.title

ボタンセルのこのバインディングも試しました:

タイトル -> ArrayController.arrangedObjects.title

上記のバインディングを使用した後、次のように表示されました。

ここに画像の説明を入力

どのコントローラーキーを使用するかを提案できますか?これがタイトルを表示する正しい方法ではない場合、正しい方法は何ですか?

4

1 に答える 1

6

残念ながら、このようにしたい場合は、少しコードを書く必要があります。テーブルの列の値を配列にバインドする場合、テーブルの列は、プロトタイプ データ セルの取得、その値の設定、および各行の所定の位置への「スタンプ」を処理します。ボタン セルのバインドは、テーブル列を介して公開されないため、単純なバインドでは対応できません。

質問に答えるには

そう。値バインディングのみが公開されるため、チェックボックスのタイトルに値を反映させたい場合 (つまり、チェックボックスにチェック状態とタイトルの表示の両方を処理させたい場合) は、タイトルを手動で設定する必要があります。これを行うには、バインディングを と混合する必要があります < NSTableDelegateProtocol > -tableView:willDisplayCell:forTableColumn:row:メソッドを使用して、要求されるたびに、セルの -title プロパティを配列コントローラーの -arrangedObjects 配列内の適切なオブジェクトのプロパティに設定します。バインディングとデータ ソース / デリゲート メソッドを混在させることは、最も基本的なアプリケーション以外では実際には非常に一般的です。注: これはチェックボックスであるため、タイトルの編集をサポートすることはできません。

代替設計

個人的には、それをすべて避けて、タイトル用に別の表の列を追加するだけです。新しい列の値を配列コントローラーの値にバインドarrangedObjects.titleし、チェックボックス ボタン セルのタイトルをオフにして、チェックボックス自体のみが表示されるようにします。これにより、全体が大幅に簡素化され、タイトルを編集できるようになります。

于 2011-11-10T16:55:27.327 に答える