У меня есть приложение, которое намеревается создать всплывающее окно при нажатии кнопки. Всплывающее окно загрузится из файла пера. И вот, кнопка нажата, и окно счастливо появляется. НО, его метод awakeFromNib вызывается дважды. Вот код:
Делегат приложения:
...
-(IBAction)myButton:(id)sender{
printf("[settings]: button pressed\n");
Config_SelectorSetup *selectorSetup = [[Config_SelectorSetup alloc] initWithWindowNibName:@"Config_SelectorSetup"];
printf("about to load\n");
[[selectorSetup window] makeKeyAndOrderFront:sender];
}
Config_SelectorSetup.m
- (id) initWithWindowNibName:(NSString *)windowNibName{
printf("[initWithWindowNibName]\n");
if( self = [super initWithWindowNibName:windowNibName] ){
...
}
return self;
}
- (void)awakeFromNib{
printf("[awakeFromNib]\n");
[self startScreen];
}
А вот и вывод:
[settings]: button pressed
[initWithWindowNibName]
about to load
[awakeFromNib]
[awakeFromNib]
Анализируя стек вызовов, первый раз он вызывается [NSObject performSelector:]
, второй - [NSIBObjectData nibInstantiateWithOwner:topLevelObjects:]
.
Может кто-нибудь сказать, что я делаю не так?
Спасибо