打开一个窗口,状态栏OS X应用10.10(Opening a window for status

2019-10-23 14:16发布

我正在开发与雨燕1.2和故事一个状态栏,OS X的应用程序。

我的应用程序不会有一个初步的控制,因为我不想被启动的应用程序时显示的所有窗口都。 但是,我需要的,如果应用程序尚未配置打开选项窗口。 我该怎么做,妥善? 现在我在做与NSPopover ,但是这是一个丑陋的解决方案并没有提供一个良好的UX。

有没有办法打开一个窗口,一个视图控制器,如果应用程序没有切入点,初步控制? 我有我的架构可能是错误的感觉。 谢谢。

import Cocoa

let kPreferences = "preferences"

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var statusMenu: NSMenu!

    let popover = NSPopover()
    var statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-2)

    func applicationDidFinishLaunching(aNotification: NSNotification) {

        syncronizeExcercises()

        // Status menu icon
        let button = statusItem.button
        button!.image = NSImage(named: "statusIcon")

        statusItem.menu = statusMenu

        let defaults = NSUserDefaults.standardUserDefaults()
        if let prefences = defaults.stringForKey(kPreferences) {
            println(prefences)
        } else {
            let preferencesViewController = NSStoryboard(name: "Main", bundle: nil)?.instantiateControllerWithIdentifier("PreferencesViewController") as! PreferencesViewController
            preferencesViewController.notConfigured = true

            popover.contentViewController = preferencesViewController
            popover.showRelativeToRect(button!.bounds, ofView: button!, preferredEdge: NSMinYEdge)
        }
    }

Answer 1:

好的,我结束了创建初始视图控制器和现在示出的情况下被配置为在应用程序的主窗口。

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var statusMenu: NSMenu!

    var window: NSWindow?
    let popover = NSPopover()
    var statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-2)

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        window = NSApplication.sharedApplication().windows.last! as? NSWindow
        window!.close()

        syncronizeExcercises()

        // Status menu icon
        let button = statusItem.button
        button!.image = NSImage(named: "statusIcon")

        statusItem.menu = statusMenu

        let defaults = NSUserDefaults.standardUserDefaults()
        if let prefences = defaults.stringForKey(kPreferences) {
            println(prefences)
        } else {
            let preferencesViewController = window?.contentViewController as! PreferencesViewController
            preferencesViewController.notConfigured = true

            window?.makeKeyAndOrderFront(nil)
        }
    }


Answer 2:

您可以随时手动加载的实例NSStoryboard (一些init方法与文件名)。 然后,你可以从故事板的初始视图控制器,并出示。 您只需设置初始视图控制器在sotryboard编辑,它应该像这样工作。

虽然有一个问题,这个我曾经面临很长一段时间,但仍然没有得到解决:我也想创建这样一个应用程序,我用我的方法,但是当你想你想关闭该窗口,CMD-Q,它实际上退出应用程序(显然)



文章来源: Opening a window for status bar OS X 10.10 application