所以我试图像这样打开一个新的NSWindow:

NSWindowController *winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[winCon showWindow:self];

当我执行此操作时,新窗口将在屏幕上闪烁,如其中所示,然后迅速消失。我知道我的窗口已在IB和所有内容中正确引用。就像它想显示窗口一样,但是随后它立即被释放或变得很奇怪。任何帮助将不胜感激。

最佳答案

首先,初始化器的名称不是-initWithNibName:,而是-initWithWindowNibName:

其次,如果您使用的是ARC,那么这是正确的,因为您没有对NSWindowController实例的强大引用,所以您的窗口变得模糊了。该方法结束后,您的引用也将结束。

例如,如果要在应用程序委托(delegate)接口(interface)中执行此操作,请执行以下操作:

@property(strong) NSWindowController *winCon;

并将其合成到您的实现文件中:
@synthesize winCon;

然后,您可以像这样设置:
self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
[self.winCon showWindow:self];

现在您的窗口不会消失。当应用程序关闭时,窗口 Controller 将被释放。

关于objective-c - NSWindowController showWindow : flashes the window,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13618382/

10-11 15:39