Какао: получить окно в windowDidLoad в контроллере - PullRequest
0 голосов
/ 01 сентября 2011

My NSWindowController имеет этот код:

- (id)init {
    [self initWithWindowNibName:@"MyWindow"];       
    [self loadWindow];
    return self;
}

- (void)windowDidLoad
{
    [super windowDidLoad];

    NSWindow *window = [self window];
    NSAssert(window != nil, @"Can’t get window!");

    // do some stuff    
}

Сбой NSAssert.

Почему?

Как получить окно?

Ответы [ 2 ]

3 голосов
/ 01 сентября 2011

Здесь есть две проблемы.Во-первых, ваш инициализатор пропускает присвоение self:

- (id)init 
{
    self = [super initWithWindowNibName:@"MyWindow"];
    if(self)
    {
        [self loadWindow];
    }
    return self;
}

Во-вторых, и вероятная причина, по которой ваше утверждение не выполняется, заключается в том, что вы не подключили window выход File'sВладелец в вашем nib-файле к объекту окна.Это означает, что ваш оконный контроллер не знает, на какой объект указывает свойство свойства окна.

Если вы не понимаете, как устанавливать выходы в Интерфейсном Разработчике, то вам нужно многому научиться, и вы должны сделать простое учебное пособие , прежде чем делать что-либо еще, потому что понимание того, как работают розетки и действия, является фундаментальным для возможности программирования с Какао.

0 голосов
/ 01 сентября 2011

Разве не должно быть

self = [super init];

в вашем

- (id)init {
[self initWithWindowNibName:@"MyWindow"];       
[self loadWindow];
return self;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...