0

ドキュメントベースのアプリケーションは初めてなので、基本的なことを見逃している可能性があります。インターフェイスにサブクラス化された 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 が、この状況で代わりにドキュメントを直接取得するのはなぜですか? 上記のコードは機能しますが、機能しないようです。

編集:明確化

4

1 に答える 1

0

さて、私はこれに対する答えを見つけました - コードの別の部分で誤って xib のファイルの所有者を windowController ではなく NSDocument に設定して、それを行ったことを忘れないでください! これにより、以前に xib で設定したファイルの所有者が上書きされます。

于 2011-05-06T22:31:30.353 に答える