儿童Windows没有正确添加

时间:2011-08-31 17:39:33

标签: macos nswindow nswindowcontroller

我正在尝试在OS X应用程序的主窗口底部添加一个辅助窗口,希望最终能够在按下切换按钮时从窗口下方激活出来。据我所知,使用SDK执行此操作的最佳方法是使用- [NSWindow addChildWindow:ordered:]将窗口添加为子窗口。但是,当我调用该函数时,虽然显示了辅助窗口,但它不会添加为子窗口。这是我按下按钮时调用的函数:

- (IBAction)childToggleButtonPressed:(id)sender {
    [self.window addChildWindow:_secondaryWindowController.window ordered:NSWindowBelow];
    NSLog(@"Child Windows: %@", [[self.window childWindows] count]);
}

(我还没有添加代码来解雇它,因为我确定它首先显示在第一位。)

这是控制台的输出:

2011-08-31 12:37:25.312 Playground[1712:707] Child Windows: (null)

有谁知道为什么窗口没有作为孩子添加,我可以做些什么来解决这个问题?

一些可能有用的附加上下文是我使用图像作为窗口本身和标题栏的背景来绘制自定义窗口。我正在修改的代码可以在http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html找到。

谢谢!

编辑:我尝试重写- [NSWindow addChildWindow:ordered:]函数并记录我能找到的任何信息,结果发现窗口本身没有传递给函数。希望这有助于有人发现问题!

1 个答案:

答案 0 :(得分:-1)

我最终解决了这个问题,因为子窗口没有NSWindowControllers。显然你不能将NSWindowController的窗口指定为子窗口。一旦我将它们转换为NSWindow子类,我就可以使用上面显示的代码将它们添加为子窗口(当然,用窗口替换_secondaryWindowController.window)。

简而言之,不要使用NSWindowController的窗口作为子窗口,只使用NSWindow。