私を夢中にさせている非常に単純な質問: プログラムで NSArrayController の選択をクリアする適切な方法は何ですか?
次のコンポーネントを使用してビューを設計しています。
- NSArrayController *controller1: オブジェクトの配列にバインド
- NSPopUpView view1: controller1.arrangedObjects にバインドされたコンテンツ。controller1.selection にバインドされた値。「Null プレースホルダーを挿入する」が選択されました
- NSArrayController *controller2: controller1.selection に格納されている配列にバインドされています
- NSPopupView view2: controller2.arrangedObjects にバインドされたコンテンツ。controller2.selection にバインドされた値。「Null プレースホルダーを挿入する」が選択されました
最初に、view1 のコンテンツが入力されます。controller1 と controller2 の選択値は nil です。view1 と view2 は null プレースホルダーを表示します。controller1 を選択すると、controller1 の選択が変更され、view2 のコンテンツが読み込まれます。すべて良い。
controller1 の選択をクリアする Clear ボタンを実装したいと思います。これは、バインディングのおかげで、controller2 の選択もクリアし、view1 と view2 を null プレースホルダーにリセットする必要があります。私の人生では、この非常に単純な関数の適切なコードを理解できません。controller1 の選択を変更すると、view1 に表示される値が更新されません。さらに悪いことに、controller1 の選択をプログラムで変更すると、controller2 で奇妙なことが起こります。view1 でさらに値を選択しても、view2 には影響しません。
私が試したこと:
[NSArray new] を使用して controller1 の SetSelectedObjects メソッドを呼び出します。
null を指定して controller1 の SetSelectedObjects メソッドを呼び出します。
NSNotFound を使用して controller1 の SetSelectedIndex メソッドを呼び出します。
controller1 の SelectedIndex プロパティを使用して、controller1 の RemoveSelectedIndex メソッドを呼び出します。
選択値をクリアするためのクラスメソッドまたは提案については、Cocoa NSArrayController のドキュメントを参照してください。そこには何もありません-それを達成する方法は言うまでもなく、これが望ましいことについての言及さえありません。
何か案は?ありがとう...