Macos 基于文档的自定义NSWindowController不保存窗口状态
我有一个基于文档的macOS应用程序,它使用自定义的Macos 基于文档的自定义NSWindowController不保存窗口状态,macos,cocoa,appkit,Macos,Cocoa,Appkit,我有一个基于文档的macOS应用程序,它使用自定义的NSWindowController。这个窗口控制器用一个主要用于工具栏的nib来实例化自己,但通过编程设置其内容 最终类ProjectWindowController:NSWindowController{ lazy var splitViewController=HostingSplitViewController() 覆盖var文档:任何对象{ 迪塞特{ guard let project=文档为?ProjectDocument else
NSWindowController
。这个窗口控制器用一个主要用于工具栏的nib来实例化自己,但通过编程设置其内容
最终类ProjectWindowController:NSWindowController{
lazy var splitViewController=HostingSplitViewController()
覆盖var文档:任何对象{
迪塞特{
guard let project=文档为?ProjectDocument else{return}
splitViewController.document=项目
}
}
便利初始化(){
self.init(windowNibName:“ProjectWindowController”)
}
重写函数windowDidLoad(){
super.windowDidLoad()
contentViewController=splitViewController
}
}
然后在我的文档中,我在makeWindowController()
override func makeWindowController(){
让windowController=ProjectWindowController()
addWindowController(windowController)
}
我看到的问题是,没有窗口状态以这种方式保存。frameAutosaveName
设置正确,但每个新窗口都是一个奇怪的小版本,什么都记不起来。如果我翻转进程,而不是使用makeWindowControllers()
使用windowNibName
,那么我的自定义控制器永远不会被创建。尽管将nib的文件所有者
标记为我的自定义类,ProjectWindowController
,但仍然存在这种情况
覆盖变量windowNibName:NSNib.Name?{“ProjectWindowController”}
这将保存窗口状态,但不会显示“我的内容”,因为它声称其所有者是通用的
NSWindowController
。有人知道如何解决这个问题吗?要恢复状态还是帧?现在帧就足够了。这不是自动的吗?但是,如果你也有充分的国家资源手边,我会喜欢两者。