可可获得主窗口

时间:2013-02-01 13:15:04

标签: cocoa mainwindow

我想创建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]);

1 个答案:

答案 0 :(得分:0)

我尝试了你的代码。它确实返回一个实例化的NSWindow对象。我没有得到任何结果。您能否将更多上下文发布到代码段?

其次,在IB中创建窗口要容易得多,也易于管理。第三,在向- (BOOL)canBecomeMainWindow传递消息之前检查makeMainWindow

如果你想创建自定义窗口programaticaly,我建议在MainMenu.xib中创建一个窗口。获取它的IBOutlet,例如window。然后创建你的windows win1,win2等,然后使用windowaddChildWindow添加为子窗口。