使用 segue 时在 Cocoa 应用程序中打开无限 window 首选项窗格
Open infinite window of Preferences Pane in Cocoa app when using segue
我想在用户点击 Preferences...
菜单或键入 ⌘+ 时在我的 Cocoa 应用程序中打开一个首选项面板,。所以我从首选项菜单项连接到故事板中的 window 控制器作为 show
segue。
但是,虽然这会在用户点击 Preferences...
时打开首选项窗格,但如果用户在关闭窗格之前再次点击菜单项,则会启动另一个窗格并显示在屏幕上。
我只想在屏幕上显示一个首选项窗格,但我该怎么做?我只想在情节提要上设置它,并避免编码使无聊的菜单项嵌套...
为了防止 windows 被多次启动,您 select Single
来自 Window 控制器的 属性检查器 在故事板上。
默认值为Multiple
,导致启动无限windows。
或者,如果您想使用代码,这是我将在 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 标识符。
我想在用户点击 Preferences...
菜单或键入 ⌘+ 时在我的 Cocoa 应用程序中打开一个首选项面板,。所以我从首选项菜单项连接到故事板中的 window 控制器作为 show
segue。
但是,虽然这会在用户点击 Preferences...
时打开首选项窗格,但如果用户在关闭窗格之前再次点击菜单项,则会启动另一个窗格并显示在屏幕上。
我只想在屏幕上显示一个首选项窗格,但我该怎么做?我只想在情节提要上设置它,并避免编码使无聊的菜单项嵌套...
为了防止 windows 被多次启动,您 select Single
来自 Window 控制器的 属性检查器 在故事板上。
默认值为Multiple
,导致启动无限windows。
或者,如果您想使用代码,这是我将在 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 标识符。