1

複数の NSPopUpButton を同じモデル オブジェクトと同期させたいと考えています。バインディングに慣れてきたばかりで、次のスキームを実装しました。

コントローラー

これはひどい考えですか?

ここでは、各 NSPopUpButton に独自の NSArrayController があります。各 NSArrayController は、モデル レイヤー内の同じNSMutableArray データ ソースからコンテンツを取得します。

モデル配列 (上記の例では動物の配列) にオブジェクトを追加および削除するときにいくつかの奇妙な問題に気付き、このアプローチがどれほど実行可能であるか、または複数のビューを同じモデルと同期させるためのより良い方法があるかどうか疑問に思っていました?

4

1 に答える 1

1

メインスレッドでモデルへの変更を保持している限り、これを行っても問題ありません。

各 NSArrayController は、NSMutableArray からの KVO 通知をリッスンし、それに応じて自身を更新します。

NSArrayController の 1 つを介して配列を変更すると、NSMutableArray が更新され、他の 2 つの NSArrayControllers によってキャッチされる KVO 通知が再度トリガーされます。

KVO に準拠した方法で NSMutableArray を更新することが重要です。つまり、 mutableArrayValueForKeyによって返される配列プロキシを使用する必要があります。

于 2014-02-14T15:02:43.957 に答える