NSWindowController windowDidLoad, не названный

У меня есть простое приложение Какао с помощью подкласса NSWindowController. В пере я установил:

  • Класс Владельца файла к моему подклассу NSWindowController
  • Выход 'Окна' Владельца Файла к основному NSWindow в пере.

init метод моего подкласса NSWindowController называют (я звоню супер), но не имеют значение, что я делаю windowDidLoad никогда не называют.

Я должен пропускать что-то очевидное, но ни за что в жизни я не могу выяснить, каково это.

10
задан Mike Hornblade 23 April 2010 в 01:44
поделиться

2 ответа

Вы пытаетесь создать экземпляр NSWindowController, инстанцировав его в другом nib-файле. Однако, когда вы инстанцируете объект в nib-файле, он инициализируется вызовом -initWithCoder:.

-initWithCoder: не является назначенным инициализатором NSWindowController, поэтому ваш экземпляр NSWindowController никогда фактически не загружает свой nib.

Вместо инстанцирования экземпляра NSWindowController путем размещения его в файле MainMenu.xib в Interface Builder, создайте его программно:

In AppDelegate.h:

@class YourWindowController;
@interface AppDelegate : NSObject
{
    YourWindowController* winController;
}
@end

In AppDelegate.m:

@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification*)notification
{
    winController = [[YourWindowController alloc] init];
    [winController showWindow:self];
}
- (void)dealloc
{
    [winController release];
    [super dealloc];
}
@end

In YourWindowController. m:

@implementation YourWindowController
- (id)init
{
    self=[super initWithWindowNibName:@"YourWindowNibName"];
    if(self)
    {
        //perform any initializations
    }
    return self;
}
@end
24
ответ дан 3 December 2019 в 13:50
поделиться

Окно может загружаться по запросу - попробуйте отправить себе window в -init . См. обсуждение - [NSWindowController loadWindow] в документации для получения дополнительной информации.

2
ответ дан 3 December 2019 в 13:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: