13

次のコードを使用してNSWindowを開こうとしています。

NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"];
[window showWindow:nil];

ウィンドウは正常に開きますが、前のウィンドウは引き続きmainWindowであり、フォーカスがあります。次のコードを実行してメインウィンドウを強制しようとしましたが、機能しません。ウィンドウにはまだ無効なタイトルバーがあり、キーイベントなどを受け入れていません。

[self.window makeKeyAndOrderFront:self];
[self.window makeMainWindow];

前のウィンドウのフォーカスを失うことができるように見える唯一の方法は、showWindowを呼び出した後にウィンドウを閉じる場合です。with[[NSApp mainWindow] close];

何か案は?

4

2 に答える 2

13

makeKeyAndOrderFront:行く方法です。同じオブジェクトself.windowを参照していますか?window

于 2010-05-12T10:13:57.440 に答える
8

nib 内に個別の NSWindowController オブジェクトを持つ代わりに、WindowController を nib ファイル所有者に割り当てることで問題を解決しました。

于 2010-05-12T15:24:59.467 に答える