为什么我必须调用两次的ShowWindow我NSWindowController 10.5?(Why

2019-08-17 09:24发布

我有一个NSWindowController的子类,我使用从笔尖加载一个窗口,并显示在屏幕上。 下面是当我想要显示的窗口,被调用的代码。 在10.6时showCustomWindow被调用时显示的窗口,但在10.5这个方法被调用两次拿到窗口中显示。

-(IBAction)showCustomWindow:(id)sender 
{
   if(!windowController){
       windowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindow"];
    }

    [windowController showWindow:self];
}

该窗口有“可见在启动”检查,并取消选中它似乎没有有所作为。

编辑:我意识到,我遇到的问题是不相关的我的NSWindowController或ShowWindow函数。 我有这样的设置是否正确。 然而,我却发现,并不是所有的类都实现awakeFromNib。 在我的NSView的一个子类(这是在笔尖我试图加载),我打电话[超级awakeFromNib]这是给我一个“不给选择响应”(但仅限于10.5这是奇怪)。 所以,我可以只取出[超级awakeFromNib]但我选择了希望更稳健:

if([NSView instancesRespondToSelector:@selector(awakeFromNib)]) {
    [super awakeFromNib];
}

这让我的笔尖正常加载并调用ShowWindow正常工作。

Answer 1:

如果你想用可见的启动应该是选中-showWindow:来控制窗口的可见性的时机。

一切似乎直接从你已经证明我们所以这只是一个猜测,但你忘了在连接window插座的连接文件的所有者对象在你的笔尖的窗口?



Answer 2:

你叫-showWindow窗口已经从笔尖加载完毕之前? 您可能需要设置[MyWindowController awakeFromNib]断点找出。



Answer 3:

编辑:OK对不起,我误解你的问题,看你需要调用的ShowWindow的两倍。 我没有一个答案。

您所看到的行为是因为该方法正确initWithWindowNibName:实际上不会加载笔尖。 等你以后调用笔尖加载懒洋洋地发生.. showWindow方法,或其他方法,如window ,要求笔尖加载。



文章来源: Why do I have to call showWindow on my NSWindowController twice on 10.5?