Mám tento kód, ktorý otvára prvok popoverv mieste odosielateľa, t. j. tlačidla, ktoré bolo stlačené. Ako môžem vyvolať túto funkciu, keď sa klikne na statusItem, aby popover zostúpil z lišty stavu / ponuky?
@IBAction func togglePopover(sender: AnyObject) {
if !(popoverIsOpen) {
myPopover.showRelativeToRect(sender.bounds, ofView: popoverButton, preferredEdge: NSRectEdge(3))
popoverIsOpen = true
}
else {
myPopover.close()
popoverIsOpen = false
}
}
Momentálne používam NSPopover
a NSStatusItem
.
edit: Bol pridaný zoznam zmien pre Xcode 6 beta 4 NSStatusItem.button
a jemne zastaral predchádzajúcu formu hovorov ako NSStatusItem.action
, NSStatusItem.title
, NSStatusItem.target
, atď.
Dokumentácia teraz číta
NSStatusItem.button
Tlačidlo zobrazené v stavovom riadku. Toto sa vytvorí automaticky pri vytvorení StatusItem. Pomocou tejto vlastnosti možno nastaviť prispôsobenie správania sa tlačidla, napríklad obrázok, cieľ / akcia, popis.
odpovede:
2 pre odpoveď č. 1Podarilo sa mi dosiahnuť implementáciu uvedenú nižšie, pomocou novej vizuálnej reprezentácie NSStatusBarIttu NSStatusBarItem. V tomto príklade má môj súbor .xib NSPopover
prvok je už pripojený k pohľadu, ktorý tu nie je zobrazený.
@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
}