У меня есть приложение 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" ]
}
}