Я не понимаю, что здесь происходит. У меня есть кнопка проводную до ниже действия в AppDelegate:Weird NSLog: NSLog отображает окно контроллера окна
- (IBAction)openWindow:(id)sender {
self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
}
На нажатие кнопки ничего не происходит (как и ожидалось), но когда я изменить код для (добавить NSLog()
)
- (IBAction)openWindow:(id)sender {
self.winCon = [[NSWindowController alloc] initWithWindowNibName:@"NewWindow"];
NSLog(@"%@",self.winCon.window);
}
Появится окно «NewWindow». Почему это происходит? Также NSLog печатает (null)
в консоли.
(В ВЛАДЕЛЬЦА «NewWindow» XIB файла является NSObject и я не подключен на ссылку окна. Так что я ожидал, что журнал для печати null
, но окно отображается был сюрприз)
Другое дело, когда я использую:
- (IBAction)openWindow:(id)sender {
[NSBundle loadNibNamed:@"NewWindow" owner:self.winCon];
}
при нажатии кнопки открывается окно. Почему это происходит? Не загружает нить и не отображает оконные процессы. Не следует ли мне называть showWindow:
или makeKeyAndOrderFront:
для отображения окна?
Когда я прочитал определенную часть яблока Docs в window programming guide:
Открытие окно, то есть, что делает окно видимым, обычно осуществляется путем размещения окна в список окна приложения с помощью вызывая один из методов makeKeyAndOrderFront :, orderFront :, и т. д., в NSWindow и т. д. Кроме того, с определенными битами, установленными в Interface Builder, окно отображается, когда файл nib загружается в в некоторых случаях.
Я думаю, это причина для loadNibNamed:..
, чтобы открыть окно. Но каковы эти «биты, установленные в Interface Builder». Где я могу получить информацию об этом? (Также я мог предотвратить открытие окна в приведенном выше случае, когда я сниму «видимый при запуске» свойство окна. Это поможет, если еще немного объяснит, что это свойство делает.) Спасибо.
Примечание: Я знаю, как инициализировать ниб с использованием подкласса NSWindowController и выполнить правильную проводку в xib, но мне просто интересно об этом.
Спасибо за информацию о окне метод, но загрузка окна и отображение окон разные? Также почему состояние журнала возвращает null. И в отношении loadNibNamed: owner: тот факт, что загрузочное окно и окно отображения являются отдельными действиями, является причиной моих сомнений. Зачем нужно вызывать окно «loadNibNamed: owner:». Я добавлю больше деталей к вопросу, чтобы сделать его более понятным. – Rakesh
Вы имели в виду 'showWindow:' я думаю. – Rakesh
В документах все они загружают окно, но ничего не говорят о отображении окна. – Rakesh