对于OSX应用程序,我将UI放在故事板中,初始控制器是一个NSWindow控制器,并附加一个NSWindow。当窗口自动打开时,它工作得很好,但是我不能让它手动工作,这是必需的,因为窗口应该只基于人工交互打开。

NSStoryboard *storyboard = [NSStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];

NSWindowController *vc = [storyboard instantiateInitialController];

NSWindowController *windowController = [[NSWindowController alloc] initWithWindow:vc.window];
[windowController showWindow:nil];
[windowController.window makeKeyAndOrderFront:self];
[windowController.window makeMainWindow];

[NSApp activateIgnoringOtherApps:YES];

在另一个项目中,当视图控制器是一个单独的xib文件时,它似乎确实可以工作,但在本例中,它没有工作。我确实看到一个空的矩形窗口短暂出现,所以发生了一些事情。有什么办法让它工作吗?

最佳答案

这里,Windows控制器对象是选择器的本地对象,当包含代码的选择器返回时,它将被释放。
使windowController成为包含此代码的对象的属性。

10-08 08:06