从 MenuBar 应用程序启动主应用程序

Launch Main app from MenuBar app

我已经成功创建了一个应用程序,我不希望它出现在 Dock 上,直到用户单击菜单栏项,然后它启动应用程序,如果用户退出主应用程序,菜单栏项仍然存在。

好的,经过几天的研究,我终于想出了怎么做。 Swift2.3

func toggleApp(sender: AnyObject) {
    if self.window!.visible {
        self.window.orderOut(window)
        NSApplication.sharedApplication().setActivationPolicy(NSApplicationActivationPolicy.Accessory)

    } else {
        NSApplication.sharedApplication().setActivationPolicy(NSApplicationActivationPolicy.Regular)
        self.window!.makeKeyAndOrderFront(nil)
        NSApp.activateIgnoringOtherApps(true)
    }
}

这是为了在用户退出 (CMD Q) 应用程序时保留菜单栏:

func applicationShouldTerminate(sender: NSApplication) -> NSApplicationTerminateReply {
    // Cancel terminate if pref set

    self.window.close()
    NSApplication.sharedApplication().setActivationPolicy(NSApplicationActivationPolicy.Accessory)
    return NSApplicationTerminateReply.TerminateCancel
}

希望对大家有所帮助。

在 Swift 5:

func toggleApp(sender: AnyObject) {
    if self.window.visible {
        self.window.orderOut(window)
        NSApplication.shared.setActivationPolicy(NSApplication.ActivationPolicy.accessory)

    } else {
        NSApplication.shared.setActivationPolicy(NSApplication.ActivationPolicy.regular)
        self.window!.makeKeyAndOrderFront(nil)
        NSApp.activate(ignoringOtherApps: true)
    }
}