Hex*_*ons 4 macos window nsstatusitem nsstatusbar swift
首先,我声明状态项:
var status_item: NSStatusItem?
Run Code Online (Sandbox Code Playgroud)
然后,我有一个关闭寡妇并添加状态项的功能:
self.view.window?.orderOut(self)
//self.view.window?.close()
self.status_item = NSStatusBar.system().statusItem(withLength: NSSquareStatusItemLength)
if let status_button = self.status_item?.button {
status_button.image = NSImage(named: "StatusBarButtonImage")
status_button.action = #selector(statusBar(sender:))
}
Run Code Online (Sandbox Code Playgroud)
这是我的动作选择器方法,该方法应删除状态项并再次显示窗口。按下状态栏中的状态栏项时未调用它:
func statusBar(sender: AnyObject) {
print("status bar clicked")
self.status_item = nil
self.view.window?.orderFront(nil)
}
Run Code Online (Sandbox Code Playgroud)
有人知道我在做什么错吗?
将按钮的目标设置为self。我假设您已将代码从AppDelegate移至单独的类。如果是这样,则该按钮仍从AppDelegate接收消息。
所以...
if let status_button = self.status_item?.button {
status_button.image = NSImage(named: "StatusBarButtonImage")
status_button.action = #selector(statusBar(sender:))
status_button.target = self //critical line
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
480 次 |
| 最近记录: |