Метод класса + (void)restoreWindowWithIdentifier:(NSString *)identifier state:(NSCoder *)state completionHandler:(void (^)(NSWindow *, NSError *))completionHandler
, описанный «El Developer», - это только половина решения.
Класс, который реализует метод (и соответствует протоколу NSWindowRegistration), также должен быть зарегистрирован как «класс восстановления» окна.Когда окно изначально создано, зарегистрируйте его, используя метод - (void)setRestorationClass:(Class <NSWindowRestoration>)restorationClass
.
например, для оконного контроллера, для инициализации:
_myWindowController = [[MyWindowController alloc] initWithWindowNibName:@"MyWindowController"];
_myWindowController.window.restorationClass = self.class;
_myWindowController.window.identifier = @"MyWindow";
для восстановления:
+ (void)restoreWindowWithIdentifier:(NSString *)identifier state:(NSCoder *)state completionHandler:(void (^)(NSWindow *, NSError *))completionHandler {
if ([identifier isEqualToString:@"MyWindow"]) {
MyAppDelegate *appDelegate = (MyAppDelegate *)NSApplication.sharedApplication.delegate;
NSWindow *myWindow = appDelegate.myWindowController.window;
completionHandler(myWindow, nil);
}
}