1

MainMenu.xib でボタンが押されたときに、EasyWindow.xib という名前の nib ファイルを開こうとしています。この IBAction メソッドにボタンを接続していますが、ボタンをクリックしても開きません。この init 部分の「window」を「loadWindow」に変更すると、問題なく動作しますが、Mac 開発者ライブラリには「このメソッドを直接呼び出してはいけません」と書かれています。ウィンドウメソッドを機能させるにはどうすればよいですか?

- (IBAction)loadEasyWindow:(id)sender
{
    [[[NSWindowController alloc] initWithWindowNibName:@"EasyWindow"] window];
}
4

1 に答える 1

0

- (NSWindow *)windowNSWindowControllerが管理する実際のウィンドウ オブジェクトへの参照のみを提供します。そのウィンドウでは実際には何もしません。それは何よりもゲッターです。

一方、-loadWindowは、プログラムが実際に nib ファイルからウィンドウをロードするときに呼び出されるメソッドであり、ウィンドウを開く、閉じる、表示することとはほとんど関係ありません。だから呼んではいけない。副作用はウィンドウ自体が表示されるため、機能すると思います。

あなたが探しているのはおそらくNSWindowController's- (IBAction)showWindow:(id)senderです。[参照]それはあなたが望むことを正確に行うべきです:

レシーバーに関連付けられたウィンドウを表示します

于 2013-01-05T01:40:29.703 に答える