Стандартный подход для этого состоит в том, чтобы иметь подкласс NSWindowController
(потенциально содержащий выходы для оконных виджетов), отвечающий за загрузку файла пера. Например,
@interface CreateAccountWindowController : NSWindowController {
// …
}
// …
@end
@implementation CreateAccountWindowController
- (id)init {
self = [super initWithWindowNibName:@"CreateAccount"];
return self;
}
// …
@end
Когда пользователь нажимает кнопку Продолжить, у вас есть метод действия, который обрабатывает этот щелчок. В классе, который содержит метод действия, объявите переменную экземпляра для соответствующего контроллера окна:
CreateAccountWindowController *createAccountWindowController;
и в методе действия, который обрабатывает щелчки кнопки «Продолжить», создайте экземпляр CreateAccountWindowController
тогда и только тогда, когда его еще нет. Это гарантирует, что в каждый момент времени существует не более одного экземпляра этого оконного контроллера, поэтому соответствующий файл пера загружается не более одного раза:
- (IBAction)showCreateAccountWindow:(id)sender {
if (! createAccountWindowController) {
createAccountWindowController = [[CreateAccountWindowController alloc] init];
}
[createAccountWindowController showWindow:self];
}