Это тот же код, который я использую, и он работает. Проблема должна быть в другом месте.
Проблема не в коде, а в настройке Интерфейсного Разработчика. (Я все еще использую Xcode 3.2, поэтому в моем мире Interface Builder - это отдельное приложение.) Убедитесь, что класс Владелец файла в xib установлен на NSWindowController
, а его выход window
подключен к окну.
Если вы этого не сделаете и для окна установлено значение Visible At Launch , вы получите именно тот симптом, который вы описали. Это связано с тем, что initWithWindowNibName
загружает файл NIB и отображается окно из-за флага Visible At Launch . Но если вы посмотрите на свойство window
вашего экземпляра NSWindowController
, вы увидите, что оно все еще равно нулю. Вот почему окно не отображается снова при повторном вызове showWindow
. Это соединения в IB, которые связывают окно с контроллером.
Вот проект, в котором IB настроен правильно.
Вот соответствующие настройки в IB: