/ / Comment puis-je appeler une fonction / action quand un statusItem est cliqué? - macos, rapide

Comment puis-je appeler une fonction / action quand un statusItem est cliqué? - macos, rapide

J'ai ce code qui ouvre un élément popoverà la position "expéditeur", c’est-à-dire le bouton sur lequel vous avez appuyé. Comment puis-je appeler cette fonction quand un statusItem est cliqué, de sorte que le popover descende de la barre de statut / menu?

@IBAction func togglePopover(sender: AnyObject) {
if !(popoverIsOpen) {
myPopover.showRelativeToRect(sender.bounds, ofView: popoverButton, preferredEdge: NSRectEdge(3))
popoverIsOpen = true
}
else {
myPopover.close()
popoverIsOpen = false
}
}

J'utilise actuellement NSPopover et NSStatusItem.

modifier: Le journal des modifications pour Xcode 6 beta 4 ajouté NSStatusItem.button et doucement déconseillé la forme précédente des appels comme NSStatusItem.action, NSStatusItem.title, NSStatusItem.target, etc.

La documentation se lit maintenant

NSStatusItem.button

Le bouton qui est affiché dans la barre d'état. Ceci est créé automatiquement lors de la création de StatusItem. La personnalisation du comportement du bouton, telle que image, cible / action, info-bulle, peut être définie avec cette propriété.

Réponses:

2 pour la réponse № 1

J'ai pu atteindre une implémentation illustrée ci-dessous, en utilisant la nouvelle représentation visuelle NSStatusBarButton d'un NSStatusBarItem. Dans cet exemple, mon fichier .xib a la NSPopover élément déjà connecté à une vue, ce qui n’est pas montré ici.

@IBOutlet weak var myPopover: NSPopover!
var statusBar: NSStatusItem!
var popoverIsOpen = false

@IBAction func togglePopover(sender: AnyObject) {
if !(popoverIsOpen) {
myPopover.showRelativeToRect(sender.bounds, ofView: statusBar.button, preferredEdge: NSRectEdge(3))
popoverIsOpen = true
}
else {
myPopover.close()
popoverIsOpen = false
}
}

func applicationDidFinishLaunching(aNotification: NSNotification?) {
//initialize menu bar icon
statusBar = NSStatusBar.systemStatusBar().statusItemWithLength(CGFloat(48))
statusBar.button.title = "Your App Title"
statusBar.button.appearsDisabled = false
statusBar.button.action = Selector("togglePopover:")
statusBar.button.target = self
}