1

我正在尝试在 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:]函数并记录我能找到的任何信息,结果发现窗口本身没有传递给函数。希望这将帮助某人找出问题所在!

4

1 回答 1

-1

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

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

于 2011-09-02T18:36:59.087 回答