我创建了一个故事板,它有窗口视图控制器作为初始视图控制器。我给窗口起了一个自动保存名称preferencesWindow
。在首选项中,我选中了 [x] 可恢复和 [x] 关闭时释放。
当我进入菜单并单击“首选项”时,我会像这样加载窗口控制器:
let storyboard = NSStoryboard(name: "Preferences", bundle: nil)
let windowController = storyboard.instantiateInitialController() as? NSWindowController
let window = windowController?.window
windowController!.showWindow(self)
这将显示首选项视图控制器,当我将其拖动到另一个位置并单击关闭按钮时,它将关闭。到目前为止,一切都很好。但是,当我从菜单中再次加载窗口时,它显示在其原始位置,而不是我上次将窗口拖动到的位置。为什么是这样?
Answer这似乎是 xCode 7 中的一个错误,在代码中设置自动保存名称解决了这个问题。
let storyboard = NSStoryboard(name: "Preferences", bundle: nil)
let windowController = storyboard.instantiateInitialController() as? NSWindowController
let window = windowController?.window
window!.setFrameAutosaveName("preferences")
windowController!.showWindow(self)
这是 Xcode 6 中的一个错误,我不知道它是否在 Xcode 7 中修复。
在 InterfaceBuilder 中设置自动保存没有效果。要让它工作,只需将其名称设置为windowDidLoad()
你的窗口控制器:
class MyWindowController: NSWindowController {
override func windowDidLoad() {
super.windowDidLoad()
self.windowFrameAutosaveName = "position"
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)