2014-06-10 10 views
6

Sto provando a scrivere un'app della barra di stato per OSX usando swift. Il codice equivalente in Objective-C sembra funzionare e mostra un menu barra di stato, ma il seguente codice non lo fa:Barra di stato OSX App che usa 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

Se non funziona, cosa * fa * fa? – BergQuester

+0

@BergQuester l'applicazione viene eseguita e non esegue nulla. Se disattivo LSUIElement, viene visualizzata l'icona di un vassoio/dock. –

risposta

11

tuo statusBarItem var sta andando fuori portata una volta che la chiamata a awakeFromNib() Completa, è necessario mantenere un riferimento ad esso. Prova qualcosa del genere:

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

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

Problemi correlati