Объекты интерфейса проводки Obj-C / Какао - PullRequest
0 голосов
/ 15 ноября 2011

Я был в этом вопросе в течение последних нескольких дней, я хотел бы попросить вашей помощи.У меня есть кнопка NSPopUpButton, которую я хотел бы заполнить программно при запуске программы;На windowControllerDidLoadNib из подкласса NSPersistentDocument я пытался вызвать interfaceReady (из MYOtherClass) следующим образом

- (void)windowControllerDidLoadNib:(NSWindowController *)windowController {
[super windowControllerDidLoadNib:windowController];
MYOtherClass *brain = [[MYOtherClass alloc] init];
[brain interfaceReady];
}

, который определен в MYOtherClass.m (кстати, он объявлен в .h) следующим образом

- (void)interfaceReady {
NSLog(@"HI %d",(int)[self.thepop numberOfItems]);   
[self.thepop removeAllItems];   
NSLog(@"HI %d",(int)[self.thepop numberOfItems]);   
}

обратите внимание, что эти сообщения NSLog были добавлены для Debug, чтобы понять, почему он не работает;в консоли оба сообщения показывают 0 (removeAllItems не меняет всплывающее окно).Я запускаю событие слишком рано?Делать что-то не так?Пожалуйста, дайте мне знать.

Спасибо за ваше время.

Примечание: я пытался добавить кнопку отладки в интерфейс (подключенный к методу IBAction), чтобы "вручную" заполнить всплывающее окнои это сработало, поэтому я думаю, что оно правильно подключено в конструкторе интерфейсов.Я все еще не знаю, почему вышеупомянутое не работает все же.

1 Ответ

1 голос
/ 15 ноября 2011

Проблема в том, что экземпляр MYOtherClass, brain, который вы создаете, не имеет связи с пером.Если перо содержит экземпляр MYOtherClass, это не тот экземпляр.Если перо не содержит экземпляра MYOtherClass, то любой экземпляр MYOtherClass не сможет увидеть всплывающее меню через ивар.

Обычный кандидат для ивара, соответствующего выходу в кончикеявляется прокси-сервером владельца файла (потому что это легко идентифицируемый экземпляр, который, как известно, существует независимо до загрузки пера).В этом случае владельцем файла, вероятно, является сам оконный контроллер.

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