2014-06-10 39 views
6

Hızlı bir şekilde OSX için bir durum çubuğu uygulaması yazmaya çalışıyorum. Objective-C eşdeğer kod iş gibi görünüyor ve bir durum çubuğu menüsünü gösterir, ancak aşağıdaki kod yapmaz:OSX Statusbar Uygulaması kullanarak 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

Çalışmıyorsa, ne yapar? – BergQuester

+0

@BergQuester uygulama çalışır ve hiçbir şey yapmaz. LSUIElement'i devre dışı bırakırsam, bir tepsi/dock simgesi belirir. –

cevap

11

Sizin statusBarItem var awakeFromNib() tamamlanıncaya kadar çağrısı bir kez kapsam dışında gidiyor yapmanız gerekenler ona bir referans tutun. Böyle bir şey deneyin:

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

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