从 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)
}