ドキュメントベースのアプリケーションは初めてなので、基本的なことを見逃している可能性があります。インターフェイスにサブクラス化された NSWindowController とモデルにサブクラス化された NSDocument を使用するドキュメント ベースのアプリケーションを作成しました。ドキュメントに従って、makeWindowControllers で windowController を初期化し、その xib をロードします。インターフェイス ビルダーでは、xib の windowController サブクラスが File's Owner として設定されています。ウィンドウ内のビューには、NSOutlineView のサブクラスがあり、NSOutlineView データソースとデリゲートもペン先で参照され、IBOutlets を介して windowController に接続されています。
ドキュメントによると、[windowController ドキュメント] を介して OutlineView データソースからドキュメントにアクセスできるはずです。ただし、OutlineView データソースから (IBOutlet を介して) windowController を参照すると、代わりにドキュメントが表示されます。
これにより、ドキュメントを取得するために OutlineView データソース (windowController の xib の NSObject のサブクラス) にかなり醜いコードが作成されました。
-(MyDocument *)myDocument {
MyDocument *theDocument = (MyDocument *)myWindowController;
return theDocument;
}
ヘッダー ファイルの IBOutlet は myWindowController を次のように参照します。
IBOutlet MyWindowController *myWindowController
簡単に言えば、windowController に接続された IBOutlet が、この状況で代わりにドキュメントを直接取得するのはなぜですか? 上記のコードは機能しますが、機能しないようです。
編集:明確化