2014-06-10 19 views
6

Próbuję napisać pasek stanu aplikacji dla OSX za pomocą Swift. Równowartość kod w Objective-C wydaje się działać i pokazuje się menu paska stanu, ale następujący kod nie działa:Aplikacja paska stanu OSX przy użyciu Swift

import Cocoa 

class AppDelegate: NSObject, NSApplicationDelegate { 

    @IBOutlet var statusMenu: NSMenu 

    func applicationDidFinishLaunching(aNotification: NSNotification?) { 
     // Insert code here to initialize your application 
    } 

    func applicationWillTerminate(aNotification: NSNotification?) { 
     // Insert code here to tear down your application 
    } 

    override func awakeFromNib() { 
     var statusBar = NSStatusBar.systemStatusBar() 
     var statusBarItem = statusBar.statusItemWithLength(CGFloat(NSVariableStatusItemLength)) 
     statusBarItem.menu = statusMenu 
     statusBarItem.title = "TestApp" 
    } 

} 
+0

Jeśli to nie działa, co * robi * robi? – BergQuester

+0

@BergQuester aplikacja działa i nic nie robi. Jeśli wyłączysz LSUIElement, pojawi się ikona tacy/przystawki. –

Odpowiedz

11

Twój statusBarItem var będzie poza zakresem raz wywołaniu awakeFromNib() uzupełnia, trzeba zachowaj odniesienie do niego. Spróbuj coś takiego:

import Cocoa 

class AppDelegate: NSObject, NSApplicationDelegate { 

    @IBOutlet var statusMenu: NSMenu 
    var statusBarItem : NSStatusItem? 


    override func awakeFromNib() { 
     var statusBar = NSStatusBar.systemStatusBar() 
     statusBarItem = statusBar.statusItemWithLength(CGFloat(NSVariableStatusItemLength)) 
     statusBarItem!.menu = statusMenu 
     statusBarItem!.title = "TestApp" 
    } 

} 
+1

Sprawdź http://stackoverflow.com/questions/24294196/os-x-10-10-yosemite-adding-a-menulet/24294589#24294589 – Grimxn

Powiązane problemy