开发者

Child Windows Not Being Added Properly

I'm trying to add a secondary window to bottom of my main window in an OS X application, with the hopes of eventually making it so it animates out from underneath the window when a toggle button is pressed. As far as I can tell, the best way to do this with the SDK is to add a window as a child window using - [NSWindow addChildWindow:ordered:]. However, when I call that function, although the secondary window is displayed, it isn't added as a child window. Here's the function called when I press the button:

- (IBAction)childToggleButtonPressed:(id)sender {
    [self.window addChildWindow:_secondaryWindowController.window ordered:NSWindowBelow];
    NSLog(@"Child Windows: %@", [[self.window chi开发者_运维问答ldWindows] count]);
}

(I haven't added the code to dismiss it yet because I'm making sure it shows up in the first place first.)

And here's the output to the console:

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

Does anyone know why the window isn't being added as a child and what I can do to fix this?

Some additional context that might help is that I'm drawing a custom window using an image as the background for both the window itself and the title bar. The code I'm modifying can be found at http://cocoawithlove.com/2008/12/drawing-custom-window-on-mac-os-x.html.

Thank you!

EDIT: I tried overriding the - [NSWindow addChildWindow:ordered:] function and logging any information I could find, and it turns out the window itself isn't passed to the function. Hopefully this will help someone find out the problem!


I ended up solving this problem by making it so that the child windows did not have NSWindowControllers. Apparently you can't assign the window of an NSWindowController to be a child window. As soon as I turned them into NSWindow subclasses, I could add them as child windows using the code I showed above (replacing _secondaryWindowController.window with the window, of course).

In short, don't use an NSWindowController's window as a child window, use just an NSWindow.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜