我想创建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]);
答案 0 :(得分:0)
我尝试了你的代码。它确实返回一个实例化的NSWindow对象。我没有得到任何结果。您能否将更多上下文发布到代码段?
其次,在IB中创建窗口要容易得多,也易于管理。第三,在向- (BOOL)canBecomeMainWindow
传递消息之前检查makeMainWindow
。
如果你想创建自定义窗口programaticaly,我建议在MainMenu.xib中创建一个窗口。获取它的IBOutlet,例如window
。然后创建你的windows win1,win2等,然后使用window
将addChildWindow
添加为子窗口。