2011-08-31 50 views
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:]函数并记录我能找到的任何信息,结果窗口本身没有传递给函数。希望这会帮助有人发现问题!

回答

-1

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

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