私はこれが私の最初のMacアプリケーションだと言って前に説明しますが、私はしばらくの間、iOSアプリケーションを構築してきました。Mac開発でMenuBarアプリケーションのウィンドウ管理はどのように機能しますか?
私はthisを持っていることを意味するメニューバーアプリ(システムトレイアプリ)を持っています。
私はInterface Builderで作成したNSWindowを表示したいので、NSWindowから派生したクラスを作成しました。ウィンドウのデリゲートとアプリケーションデリゲートから私のクラス作られた私は、次の操作を行います。
MyClass *myClass = [[MyClass alloc] init];
[myClass display];
[myClass center];
[NSApp activateIgnoringOtherApps:YES];
[viewer makeKeyAndOrderFront:nil];
これは、標準のウィンドウのボタン(クローズ、最大化、最小化する)のではなく、私が定義した窓のないウィンドウを表示しているようです。
これはウィンドウを表示する正しい方法ですか?私の設計したインターフェイスを表示するようにウィンドウをどのように定義する必要がありますか?このプログラミングWindowsフォームで
は次のようになります。
Form myForm = new Form();
myForm.Show();
私は本当にアプリケーションの代理人に私のウィンドウのロジックを置くしたくなかったが、応答のおかげで、オプション2は治療を働いた。私はFileOwnerをMyClassに変更し、アプリケーションデリゲートでそのインスタンスを設定し、オプション2コードを呼び出しました。それは魅力のように働いた!私が今いる唯一の問題は、発生すると思われる唯一のイベントはAwakeFromNibであり、WindowWillLoadは起動しないということです。 –
窓の内容を初期化するための通常の場所であるawakeFromNibですか? –
windowWillLoadはNSWindowControllerとサブクラスでのみ呼び出されるので、オプション2を使用した場合、awakeFromNib:は初期化コードに最適な場所です。 – sbooth