Я несколько раз использовал NSWindowController в проектах и чувствую, что имею (очень) приблизительное представление о концепциях, лежащих в основе этого важного класса. Что я хотел бы сделать с этим постом, так это прояснить / исправить мое собственное понимание и, надеюсь, помочь другим учащимся сделать этот первый шаг к пониманию. Я считаю наиболее полезными краткие концепции, обзор и передовые методы, и часто отсутствует в документации. Вот мой взгляд на NSWindowController (вопросы выделены жирным шрифтом):
window
всегда должно быть связано с NSWindow в InterfaceBuilder. [super initWithWindowNibName:]
, чтобы при обращении к [окно mycontroller]
загружалось перо. Должно ли это иметь место и для NSWC для окна MainMenu.xib, даже если оно открывается при запуске? Используйте [mycontroller showWindow: nil]
для отображения связанного окна спереди. Если вы хотите, чтобы окно отображалось в виде листа, используйте что-то вроде:
[NSApp beginSheet: [окно mycontroller]
modalForWindow: [собственное окно]
modalDelegate: себя
didEndSelector: @selector (didEndMySheet: returnCode: contextInfo :)
contextInfo: ноль];
didEndSelector:
должен быть методом NSWC родительского окна и может получить доступ и освободить mycontroller с помощью [sheet windowController]
.
- Чтобы закрыть окно, вызовите метод performClose:
окна NSWC.
Некоторые вопросы:
Пожалуйста, поправьте меня, если есть Это плохая практика или просто неправильная. Я хочу прояснить свое понимание NSWindowController, поэтому любые дополнения (в виде передового опыта, опыта, ошибок) будут очень признательны.
Спасибо, Laurie