从 appdata 中的菜单项加载故事板
Loading a storyboard from menuitem in appdata
这一定比我想的要简单得多。
我有一个 Main.storyboard 在应用程序加载时启动。我有一个系统菜单,其中一个菜单项需要加载故事板对话框。
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
statusBarItem = statusBar.statusItemWithLength(-1)
statusBarItem.menu = menu
statusBarItem.title = "WP"
var options = NSMenuItem(title: "Options ...", action: nil, keyEquivalent: "")
var quit = NSMenuItem(title: "Quit", action: Selector("terminate:"), keyEquivalent: "q")
menu.addItem(options)
menu.addItem(quit)
}
选项变量 "action" 需要加载故事板。我可以在 AppDelegate 中访问它吗?
如果我没理解错的话,你的应用看起来完全是一个状态栏应用(启动时没有 window 出现?)。
所以基本上您需要实例化然后调出 window。也许是这样的?
在您的“applicationDidFinishLaunching
”函数中:
var menuItem : NSMenuItem = NSMenuItem()
menuItem.title = "Options ..."
menuItem.action = Selector("bringUpOptionsWindow:")
menuItem.target = self
menuItem.keyEquivalent = ""
menuItem.enabled = true
menu.addItem(menuItem)
// ...
// and then later on
// ...
func bringUpOptionsWindow(sender : AnyObject)
{
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let myController = storyboard.instantiateControllerWithIdentifier("MyOptionsWindowController") as! NSWindowController
myController.showWindow(sender)
}
这一定比我想的要简单得多。
我有一个 Main.storyboard 在应用程序加载时启动。我有一个系统菜单,其中一个菜单项需要加载故事板对话框。
func applicationDidFinishLaunching(aNotification: NSNotification) {
// Insert code here to initialize your application
statusBarItem = statusBar.statusItemWithLength(-1)
statusBarItem.menu = menu
statusBarItem.title = "WP"
var options = NSMenuItem(title: "Options ...", action: nil, keyEquivalent: "")
var quit = NSMenuItem(title: "Quit", action: Selector("terminate:"), keyEquivalent: "q")
menu.addItem(options)
menu.addItem(quit)
}
选项变量 "action" 需要加载故事板。我可以在 AppDelegate 中访问它吗?
如果我没理解错的话,你的应用看起来完全是一个状态栏应用(启动时没有 window 出现?)。
所以基本上您需要实例化然后调出 window。也许是这样的?
在您的“applicationDidFinishLaunching
”函数中:
var menuItem : NSMenuItem = NSMenuItem()
menuItem.title = "Options ..."
menuItem.action = Selector("bringUpOptionsWindow:")
menuItem.target = self
menuItem.keyEquivalent = ""
menuItem.enabled = true
menu.addItem(menuItem)
// ...
// and then later on
// ...
func bringUpOptionsWindow(sender : AnyObject)
{
let storyboard = NSStoryboard(name: "Main", bundle: nil)
let myController = storyboard.instantiateControllerWithIdentifier("MyOptionsWindowController") as! NSWindowController
myController.showWindow(sender)
}