1

ドキュメントベースの Mac アプリケーションのメイン ウィンドウはどこにありますか? Xcode から新しいプロジェクトを作成すると、MainMenu.xib にウィンドウがありません。Document.xib には、ドキュメントのウィンドウに使用されるウィンドウ オブジェクトのみがあります。Interface Builder でメイン ウィンドウをデザインしたいのですが、どこに作成されているのかわかりません。

編集

Xcode でバグが発生していると思います。ランダムな名前でドキュメントベースのアプリを作成すると、期待どおりに機能します。

ただし、以前のプロジェクト名の名前でドキュメントベースのアプリを作成すると、ドキュメント以外のウィンドウが最初に表示され、コンソールにもこのエラーが表示されます。

Unknown class 'AppDelegate', using 'NSObject' instead. Encountered in Interface Builder file at path /Users/[COMPUTER]/Library/Developer/Xcode/DerivedData/[PROJECT]-gohsjlddlopenfapdikaqibmvvqs/Build/Products/Debug/[PROJECT]/Contents/Resources/en.lproj/MainMenu.nib.
4

2 に答える 2

2

基本的なココア ドキュメント アーキテクチャでは、アプリにはドキュメントごとに 1 つのウィンドウがあり、メイン メニュー nib はアプリ デリゲートによって所有されていると想定しています。

サブクラス化したり、ペン先やコントローラーに追加のウィンドウを追加したりすることを妨げるものではありません。

必要なものがメイン ウィンドウとドキュメント ウィンドウである場合、それは一般的なパラダイムですが、提供されているテンプレートにはありません。

これを行う最も簡単な方法は、ウィンドウをメイン メニュー nib に追加することです。次に、すべてのドキュメント ウィンドウを参照する方法が必要になるでしょう。Mac 上のメールはこの良い例ですが、複数のメイン ウィンドウも使用できます。

これを正しく行うには、おそらくカスタム NSWindowController サブクラスが必要になるでしょう。

ただし、NSObject サブクラスをアプリ デリゲートとして追加し、非ドキュメント ベースのアプリ プロジェクト テンプレートでデリゲートの構成を模倣することもできます。これを行うには、いくつかの手順を実行する必要があります。NSObject サブクラスを作成します。プロトコルが宣言されていることを確認してください。MainMenu.xib で、ライブラリから NSObject (青いボックスのようなもの) を追加します。そのクラスを新しい NSObject サブクラスに設定します。xib ファイルの NSApplication プレースホルダー アイコンをクリックし、右側のインスペクターでデリゲート プロパティをアプリのデリゲート オブジェクトに接続します。アプリのデリゲート オブジェクトを選択します。ウィンドウ プロパティを xib のウィンドウに接続します。存在しない場合、おそらく存在しない場合は、アプリのデリゲート クラス インターフェイスで宣言する必要があります。(これは、ボタンやその他のオブジェクトのプロパティを追加するのと同じですが、 @property (unsafe_unretained) IBOutlet NSWindow *window;@property (strong) IBOutlet NSWindow *window;

于 2013-09-24T05:04:35.443 に答える