【发布时间】:2015-07-16 18:53:52
【问题描述】:
我有一个基于NSDocument 的应用程序,我希望在重新打开文档时保存和恢复我的窗口位置。 Apple 在这方面的文档很少,但我能够拼凑起来的是,在某些时候,应用程序中的某些内容需要调用 NSWindow.setFrameUsingName() 和 NSWindow.setFrameAutosaveName()。
我还没有完全弄清楚这需要在什么时候发生,以及需要做什么。例如,这根本不起作用:
// In my NSDocument class
override func windowControllerDidLoadNib(aController: NSWindowController) {
super.windowControllerDidLoadNib(aController)
// Add any code here that needs to be executed once the windowController has loaded the document's window.
aController.window?.setFrameUsingName("MainWindow")
aController.window?.setFrameAutosaveName("MainWindow")
}
我已经阅读了各种不同的文档或论坛答案,指出 awakeFromNib() 是另一个可以执行此操作的领域,但我也无法使其发挥作用。
我也很困惑/担心这会以某种方式受到自动布局或我在 Interface Builder 中做错的事情的影响 - 例如,这是我在 IB 中设置窗口的方式:
我并不特别希望我的窗口居中,但其他选项似乎将其锁定在固定的水平或固定的垂直位置,我也不是很想要。让我的窗口居中的一个副作用是我的文档窗口不再级联,我既不想也似乎无法阻止这种情况发生(请注意,windowController.shouldCascadeWindows = true 也无济于事)。
那么 - 这里发生了什么?我发现有关该主题的知识特别不清楚或具有误导性,并且对于 2015 年的 Cocoa 开发可能已经过时,因此对此进行现代复习会很棒。
【问题讨论】:
标签: swift cocoa osx-yosemite nsdocument