2017-06-15 2 views
1

Je veux faire la barre d'état pour Mac OS, mais après avoir couru titre de l'application montre et disparaît immédiatementNSStatusBar + Swift: titre l'indique et disparaître immédiatement

func applicationDidFinishLaunching(_ aNotification: Notification) { 
     // Insert code here to initialize your application 
     let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength) 
     statusItem.title = "Hello" 

    } 

Je pense que quelque chose de mal avec des références, mais je ne sais pas comment pour résoudre ce problème.

Répondre

1

En effet vous avez besoin d'une forte référence à l'élément d'état

var statusItem : NSStatusItem! 

func applicationDidFinishLaunching(_ aNotification: Notification) { 
     // Insert code here to initialize your application 
     statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength) 
     statusItem.title = "Hello" 

} 

Cependant, je recommande d'utiliser une fermeture pour initialiser l'élément d'état

let statusItem : NSStatusItem = { 
    let item = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength) 
    item.title = "Hello" 
    return item 
}() 
+0

J'ai essayé cela dans Xcode 9 avec Swift 4 et cela ne fonctionne pas non plus - l'article apparaît pour un clin d'œil et disparaît immédiatement. – ixany