0

我想创建 3 个这样的窗口:

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

并将其中一个设为主窗口,然后获取主窗口,但我总是得到nil.

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

所有这些都是零:

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 等,然后将其作为子窗口添加到您的windowusing addChildWindow.

于 2013-02-01T14:15:42.447 回答