0

次のような 3 つのウィンドウを作成します。

NSWindow *win1 = [[NSWindow alloc] initWithContentRect:rect1
                                             styleMask:uiStyle
                                               backing:backingStoreStyle
                                                 defer:NO];

それらの1つをメインウィンドウにしてからメインウィンドウを取得しますが、常にnil.

[win1 makeKeyAndOrderFront:win1];
[win2 makeKeyAndOrderFront:win2];
[win3 makeKeyAndOrderFront:win3];
[win2 makeMainWindow];

そして、これらはすべて nil です:

NSLog(@"%@", [app mainWindow]);
NSLog(@"%@", [win1 isMainWindow]);
NSLog(@"%@", [win2 isMainWindow]);
NSLog(@"%@", [win3 isMainWindow]);
4

1 に答える 1

0

私はあなたのコードを試しました。インスタンス化された NSWindow オブジェクトを返します。私はまったくゼロになりませんでした。コード スニペットにさらにコンテキストを投稿していただけますか?

次に、IB でウィンドウを作成する方がはるかに簡単で扱いやすいです。- (BOOL)canBecomeMainWindow第三に、メッセージを渡す前にチェックしますmakeMainWindow

プログラムでカスタム ウィンドウを作成する場合は、MainMenu.xib にウィンドウを作成することをお勧めします。たとえば、IBOutlet を取得しますwindow。次に、windows win1、win2 などを作成し、次に子ウィンドウとして using に追加しwindowますaddChildWindow

于 2013-02-01T14:15:42.447 に答える