1 つの NSArrayController の内容を異なる XIB で定義された 2 つのウィンドウに表示する際に問題が発生しています。
私のメイン ウィンドウ (MainMenu.xib) には、NSArrayController にバインドされた NSTableView があります。
2 番目の XIB には、NSTableView を含む別のウィンドウがあります。新しい NSArrayController を作成し、テーブルをその NSArrayController の内容にバインドしました。
両方の NSArrayController は、まったく同じ NSArray にバインドされています。
最初はすべて問題ありませんが、問題は、メイン ウィンドウで NSArrayController を使用してオブジェクトを配列に追加すると、セカンダリ ウィンドウのデータ ビューが更新されないことです。これは、新しいオブジェクトの追加に NSArrayController が使用されていないため、自分自身を更新する必要があることを認識していないことが原因である可能性が最も高いです。
私がやりたいことは、両方のウィンドウで NSArrayController のまったく同じインスタンスを使用することです。このようにして、オブジェクトが配列に追加されると、両方のビューに変更が通知されます。
問題は、Interface Builder でこれを行う方法がわからないことです。NSArrayController を別の NSArrayController にバインドできません (NSArray にしかバインドできないことを示す実行時エラーが発生します)。NSArrayController を File's Owner の NSArrayController メンバーに接続しても、使用したい NSArrayController が消去されるだけなので、どちらも役に立ちません。
コードでバインディングを自分でセットアップすることもできると思いますが、可能であれば Interface Builder を使用する方がよいようです。Interface Builderでこれを行う方法はありますか、またはこれをすべて一緒に設定するより良い方法はありますか?
更新: Chuck の回答とコメントに応えて、次のことを試しました。 : 認識されないセレクターがインスタンスに送信されました") - テーブルの各列を、arrayController.arrangedObjects.propertyName のモデル キー パスを使用してファイルの所有者にバインドします。
これでも、テーブルの内容が更新されることはありませんでした。これは、NSArrayController 自体ではなく、NSArrayController の ArrangeObjects にバインドしているためだと思います。しかし、NSArrayController に直接バインドすると、エラーが発生します。
通常、「Bind to」ComboBox から NSArrayController を選択し、arrangedObjects をコントローラー キーとして使用し、プロパティ自体をモデル キー パスとして使用します。この場合、それと同等のことを行う方法がわかりません-できれば。
上記のプロセスで何か間違ったことをしましたか?