私はココアのバインディングの世界にかなり慣れていないので、いくつかの問題を抱えています (おそらく/おそらく誤解によるものです)。
クラス Plugin のオブジェクトを含む、プラグインと呼ばれる NSMutableArray を含むシングルトンがあります。プラグイン配列にオブジェクトを追加する loadPlugins というメソッドがあります。これはいつでも呼び出すことができます。Interface Builder にインスタンスとして追加されています。
また、IB には NSObjectController があり、そのコンテンツ アウトレットはシングルトンに接続されています。contentArray が NSObjectController にバインドされている NSArrayController もあります (コントローラー キーは「selection」、モデル キー パスは「plugins」、オブジェクト クラス名は「Plugin」です)。
最後に、Plugin クラスのプロパティのキーを使用して、値が NSArrayController の ArrangeObjects にバインドされている 2 つの列を持つテーブル ビューがあります。
これまでのところ標準です(少なくともチュートリアルからわかる限り)。私の問題は、シングルトンで loadPlugins メソッドが呼び出され、プラグイン配列にオブジェクトが追加されたときに、オブジェクトを表示するためにテーブルが更新されないことです (ペン先がロードされる前に loadPlugins が呼び出されない限り)。tableView で呼び出された -reloadData は何もしません。
参照された配列が更新されたことを NSArrayController に伝える方法はありますか? loadPlugins で使用できる NSArrayController の -add: メソッドがあることは理解していますが、シングルトンをディスプレイの側面から完全に分離したいので、これは望ましくありません。
これは以下に関連しているようです: Refresh Cocoa-Binding - NSArrayController - ComboBox
「コントローラーの背後にある配列を編集する」という行は、おそらく問題を特定しているようですが、シングルトンがコントローラーを認識しないようにすることが可能になることを願っています。
前もって感謝します。
\編集...
TechZen の提案によると、バインディングは次のとおりです。
TableColumn --('arrangedObjects', 'pluginName', Value)--> NSArrayController
NSArrayController --('selection', 'plugins', ContentArray)--> NSObjectController
NSObjectController --(content)--> PluginsManager