当用户点击 Preferences...
菜单或输入 ⌘+, 时,我想在我的 Cocoa 应用程序中打开一个首选项 Pane 。因此,我从首选项菜单项连接到 Storyboard中的窗口 Controller 作为 show
segue。
但是,虽然当用户点击Preferences...
时会打开首选项 Pane ,但如果用户在关闭 Pane 之前再次点击菜单项,则会启动另一个 Pane 并显示在屏幕。
我只想在屏幕上显示一个首选项 Pane ,但我该如何做到这一点?我只想在 Storyboard 上设置它,并避免编码,使无聊的菜单项嵌套......
最佳答案
为了防止窗口多次启动,您可以从 Storyboard 上窗口 Controller 的属性检查器中选择Single
。
默认值为Multiple
,导致启动无限窗口。
或者,如果您想使用代码,我将在 AppDelegate.swift
中执行以下操作。
extension AppDelegate: NSSeguePerforming {
func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
if identifier == OpenPreferencesIdentifier {
let windows = NSApp.windows
for window in windows {
if window.windowController?.className == MyPreferencesWindowController.className() {
return false
}
}
}
return true
}
}
另外,不要忘记在 Storyboard 上设置适当的 segue 标识符。
关于macos - 使用 segue 时在 Cocoa 应用程序中打开“首选项 Pane ”的无限窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817344/