Как получить восстановление состояния для восстановления всех окон / вкладок на macOS? - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть приложение MacOS AppKit, не основанное на документах. В нем есть одно окно, автоматически созданное раскадровкой. Я подклассифицировал NSWindowController и добавил override func newWindowForTab(_ sender: Any?), чтобы включить кнопку + на панели вкладок. Мой основной контроллер представления позволяет пользователю переименовывать заголовок вкладки, и заголовок окна устанавливается на то же самое. Это похоже на то, как работает переименование вкладки Xcode.

Кроме того, я добавил подкласс NSWindow и добавил restorableStateKeyPaths, чтобы обеспечить автоматическое восстановление заголовков вкладок и окон при перезапуске приложения.

Все это прекрасно работает.

Но только для первой вкладки. Главное окно загружено, и в нем автоматически устанавливаются заголовки вкладок и окон.

Другие вкладки (windows) не восстанавливаются.

Любые подсказки о том, что мне не хватает, чтобы сделать все вкладки восстановлен?

Мой NSWindowController:

class MyWindowController: NSWindowController {
    var subview: MyWindowController?

    @IBAction override func newWindowForTab(_ sender: Any?) {
        let story = self.storyboard
        let windowVC = story?.instantiateInitialController() as! Self

        window?.addTabbedWindow(windowVC.window!, ordered: .above)
        subview = windowVC

        windowVC.window?.orderFront(self.window)
        windowVC.window?.makeKey()
    }
}

Мой NSWindow:

class MyWindow: NSWindow {
    override class var restorableStateKeyPaths: [String] {
       return [ "self.tab.title", "self.title" ]
    }
}
...