我有这个代码在“发件人”位置打开一个弹出元素,即按下的按钮。如何在单击statusItem时调用此函数,以便弹出窗口从状态/菜单栏中下载?
@IBAction func togglePopover(sender: AnyObject) {
if !(popoverIsOpen) {
myPopover.showRelativeToRect(sender.bounds, ofView: popoverButton, preferredEdge: NSRectEdge(3))
popoverIsOpen = true
}
else {
myPopover.close()
popoverIsOpen = false
}
}
我目前正在使用NSPopover
和NSStatusItem
。
修改:Xcode 6 beta 4的更改日志添加了NSStatusItem.button
,并轻柔地弃用了以前的调用形式,例如NSStatusItem.action
,NSStatusItem.title
,{{1}等等。
文档现在读取
NSStatusItem.target
状态栏中显示的按钮。这是在创建StatusItem时自动创建的。可以使用此属性设置按钮的行为自定义,例如图像,目标/操作,工具提示。
答案 0 :(得分:2)
我能够使用NSStatusBarItem的新NSStatusBarButton可视化表示来实现下面显示的实现。在此示例中,我的.xib文件已将NSPopover
元素连接到视图,此处未显示。
@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
}