Не совсем понятно, о чем вы спрашиваете. Вы упоминаете, что MainWindow
является торговой точкой в MainMenu.xib
, но вы не указываете, какой класс определяет торговую точку.
Если это окно предназначено для одного главного окна "проекта", то вы должны назначить свойство outlet в делегате приложения.
Затем вы можете получить доступ к этому из других классов, используя что-то вроде [(YourAppDelegate*)[NSApp delegate] mainWindow];
.
Если, однако, вы пытаетесь получить ссылку на окно текущего документа, то это немного сложнее.
Причина, по которой NSDocument
по умолчанию не имеет выхода window
, заключается в том, что он предназначен для работы с экземплярами NSWindowController
, которые сами управляют различными окнами, связанными с документом. Это означает, что документ может иметь несколько окон, показывающих разные виды одних и тех же данных, дополнительные палитры, связанные с документом, и так далее. Каждый экземпляр NSWindowController
будет иметь свой собственный файл кончика окна и выход window
.
По умолчанию NSDocument
создает для вас один экземпляр NSWindowController
, если вы специально не создаете и не назначаете экземпляры NSWindowController
для документа. Это автоматически, вам даже не нужно знать, что контроллер окна существует.
Это означает, что если вы не управляете окнами документов с помощью NSWindowController
экземпляров самостоятельно, вы можете прикрепить окно к NSWindowController
, которое автоматически создается с помощью NSDocument
, следующим образом:
/* Only implement this in an NSDocument instance where the
automatic window controller is being used.
If the document has multiple window controllers, you must
keep track of the main window controller yourself
and return its window
*/
- (NSWindow*)documentWindow
{
if([[self windowControllers] count] == 1)
{
return [[[self windowControllers] firstObject] window];
}
return nil;
}