Детские окна не добавляются должным образом - PullRequest
1 голос
/ 31 августа 2011

Я пытаюсь добавить вторичное окно в нижнюю часть моего главного окна в приложении 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 голосов
/ 02 сентября 2011

Я решил эту проблему, сделав так, чтобы у дочерних окон не было NSWindowControllers.Очевидно, вы не можете назначить окно NSWindowController дочерним окном.Как только я превратил их в подклассы NSWindow, я мог бы добавить их в качестве дочерних окон, используя код, который я показал выше (конечно, заменив _secondaryWindowController.window на окно).

Короче, не используйтеОкно NSWindowController в качестве дочернего окна, используйте только NSWindow.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...