2017-08-01 133 views
0

我已經創建了一個菜單欄應用程序,我希望當您點擊菜單欄項目之一時,它可以在關閉狀態和打開狀態之間切換(打勾和未打勾),但我很努力在代碼中執行此操作。有沒有人有關於如何實現這一目標的任何想法?將NSMenuItem的狀態設置爲開

我可以看到,我可以將它設置在屬性檢查器中,但是我想將其更改爲打開/關閉,一旦它被按下。

感謝 萬里

回答

0

簡單的解決方案:創建一個IBAction

@IBAction func toggleState(_ sender: NSMenuItem) { 
    sender.state = sender.state == NSOnState ? NSOffState : NSOnState 
} 

NSMenuItem連接到IBAction。如果響應控制器不相關的Application Scene,連接IBAction通過First Responder(紅色立方體)

+0

正是我在尋找驚人的,謝謝!我假設當每個狀態切換時,我可以調用一個不同的函數來對每個切換狀態進行操作? –

+0

您可以在線後設置狀態,然後調用*不同功能。事實上,如果菜單項與場景/控制器直接相關,Charles的答案會更好 - 因此可以限制值。在這種情況下,添加'didSet'觀察者並在那裏調用你的*不同的函數*。 – vadian

0

簡單,幾乎沒有代碼來做到這一點最簡單的方法:

  1. 您的應用程序委託創建一個布爾屬性(它可以是另一個對象,如果這是更合適的)中,用 '@objc' 和 '動態',像這樣將其標記:

@objc dynamic var foo: Bool = false

  • 在Interface Builder中,單擊您的菜單項,然後轉到綁定檢查器。將「值」綁定到App Delegate,將Controller Key留空,並將Model Key Path設置爲屬性的名稱(本例中爲'foo')。

  • 沒有第三步。