1

Xcode 4 を使用して OSX (Lion) 用のアプリケーションを作成しています。

これとインターネットで少し壁にぶつかることは、これまでのところ特に役に立たないことが証明されています.

MainMenu.xib とドキュメント ウィンドウだけでなく、ドキュメントも定義しています。もちろん、ドキュメント ウィンドウは、ドキュメントが読み込まれたり作成されたりしたときに作成されるものであり、関連するデータにアクセスできます。

このプロジェクトで可能な限り Cocoa Bindings を利用したいので、私の質問は次のとおりです。

別のビューを作成した場合 (リンクされた Nib を持つ NSViewController としましょう); ドキュメントのデータへのアクセスを許可するにはどうすればよいですか?

ドキュメント クラスに #import を追加しようとしましたが、ドキュメント クラスの #import をビュー コントローラーに (作成するために) 追加すると問題が発生します - 不明な型のコンパイル エラーが発生します。

また、暫定的なオブジェクトを渡すルートをたどりました (さらに、ビュー コントローラーを作成した後にゲッター/セッターにアクセスすることさえあります)。確かに、より良い、よりクリーンな方法があるに違いありませんか?

アプリケーションには NSWindowController (デフォルト) が 1 つだけあり、それは XCode の非コア データ ドキュメント ベースのアプリケーション テンプレートのバニラです。

助けてくれてありがとう、クリント

4

1 に答える 1

1

バインドする場合は、他のクラスで何らかのドキュメントへの参照が必要です。を既に使用しているため、のをドキュメントにNSViewController設定できます。または、カスタム プロパティをサブクラス化して作成し、ドキュメントを参照することもできます。representedObjectNSViewControllerNSViewController

YourViewController* controller = [[YourViewController alloc] initWithNibName:@"YourNib" bundle:nil];
[controller setRepresentedObject:yourDocument];

Interface Builder では、ビュー コントローラー nib のオブジェクトを のキー パスを使用してファイルの所有者representedObject.<some property of your document>にバインドできます。

于 2011-08-16T00:39:59.040 に答える