为什么NSWindow不会恢复其状态(使用Lion中的Resume)?

时间:2011-12-22 16:00:49

标签: objective-c cocoa osx-lion nswindow resume

我正在以前的Snow Leopard应用程序中实现Resume。对于我的应用程序的主窗口,我检查了Interface Builder中的Restorable复选框,一切正常。它的代表有-window:willEncodeRestorableState:state-window:didDecodeRestorableState:来电,就好了。一切正常。

我有另一个窗口,当用户退出时,有时也会打开。我检查了Restorable,并实现了上述两种方法。当我打开窗口退出时会调用..willEncode..,但..didDecode..永远不会被调用,窗口也无法恢复。我已经阅读了documentation,似乎我可能想创建一个恢复类,但文档并没有特别清楚如何这样做。

我尝试在我的AppDelegate中实现<NSWindowRestoration>协议,并在我的第二个可恢复窗口的委托中,但+restoreWindowWithIdentifier:state:completionHandler:方法从未被调用过任何一个。

我错过了什么?我与NSWindowRestoration走在正确的轨道上,但做得不对吗?文档谈论修复类的方式,听起来就像只有一个。我是否需要在应用程序的plist中指定它?

1 个答案:

答案 0 :(得分:1)

以上链接的Resume documentation忽略了提及的是NSWindow的{​​{3}}属性。如果在代码中设置此属性(对于实现<NSWindowRestoration>的类,则该类负责创建窗口。