Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 基于文档的自定义NSWindowController不保存窗口状态_Macos_Cocoa_Appkit - Fatal编程技术网

Macos 基于文档的自定义NSWindowController不保存窗口状态

Macos 基于文档的自定义NSWindowController不保存窗口状态,macos,cocoa,appkit,Macos,Cocoa,Appkit,我有一个基于文档的macOS应用程序,它使用自定义的NSWindowController。这个窗口控制器用一个主要用于工具栏的nib来实例化自己,但通过编程设置其内容 最终类ProjectWindowController:NSWindowController{ lazy var splitViewController=HostingSplitViewController() 覆盖var文档:任何对象{ 迪塞特{ guard let project=文档为?ProjectDocument else

我有一个基于文档的macOS应用程序,它使用自定义的
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
。有人知道如何解决这个问题吗?

要恢复状态还是帧?现在帧就足够了。这不是自动的吗?但是,如果你也有充分的国家资源手边,我会喜欢两者。