Показ NSWindow - PullRequest
       12

Показ NSWindow

0 голосов
/ 06 августа 2011

При нажатии на пункт меню отображается NSWindow, но только в первый раз, почему так и как это исправить?

-(IBAction)menuClick:(id)sender
{   
    if (!formsView) {
        formsView = [[NSWindowController alloc] initWithWindowNibName:@"Forms"];
    }

    [formsView showWindow:self];
}

Ответы [ 3 ]

5 голосов
/ 06 августа 2011

Это тот же код, который я использую, и он работает. Проблема должна быть в другом месте.

Проблема не в коде, а в настройке Интерфейсного Разработчика. (Я все еще использую Xcode 3.2, поэтому в моем мире Interface Builder - это отдельное приложение.) Убедитесь, что класс Владелец файла в xib установлен на NSWindowController, а его выход window подключен к окну.

Если вы этого не сделаете и для окна установлено значение Visible At Launch , вы получите именно тот симптом, который вы описали. Это связано с тем, что initWithWindowNibName загружает файл NIB и отображается окно из-за флага Visible At Launch . Но если вы посмотрите на свойство window вашего экземпляра NSWindowController, вы увидите, что оно все еще равно нулю. Вот почему окно не отображается снова при повторном вызове showWindow. Это соединения в IB, которые связывают окно с контроллером.

Вот проект, в котором IB настроен правильно.

Вот соответствующие настройки в IB:

The relevant settings for IB

2 голосов
/ 01 декабря 2014
[window makeKeyAndOrderFront:self]
2 голосов
/ 06 августа 2011

Вы сняли флажок «выпускать при закрытии» в Интерфейсном Разработчике (не встроен в Xcode 4) для окна?

...