2017-05-16 8 views
1

最初に応答しない行動選択方法私は、ステータス項目を宣言:NSStatusItem、

var status_item: NSStatusItem? 

その後、私は未亡人を閉じ、ステータス項目を追加する機能を持っている:

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:)) 
} 

は、ここに私ですアクションセレクタメソッドを使用すると、ステータス項目が削除され、ウィンドウが再び表示されます。 ステータスバーにステータスバーの項目を押したときに呼び出されていないカントー:

func statusBar(sender: AnyObject) { 
    print("status bar clicked") 
    self.status_item = nil 
    self.view.window?.orderFront(nil) 
} 

線量誰も私が間違ってやっているか知っていますか?

答えて

1

自己へのボタンのターゲットを設定します。私は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 
} 
関連する問題