我已經創建了一個菜單欄應用程序,我希望當您點擊菜單欄項目之一時,它可以在關閉狀態和打開狀態之間切換(打勾和未打勾),但我很努力在代碼中執行此操作。有沒有人有關於如何實現這一目標的任何想法?將NSMenuItem的狀態設置爲開
我可以看到,我可以將它設置在屬性檢查器中,但是我想將其更改爲打開/關閉,一旦它被按下。
感謝 萬里
我已經創建了一個菜單欄應用程序,我希望當您點擊菜單欄項目之一時,它可以在關閉狀態和打開狀態之間切換(打勾和未打勾),但我很努力在代碼中執行此操作。有沒有人有關於如何實現這一目標的任何想法?將NSMenuItem的狀態設置爲開
我可以看到,我可以將它設置在屬性檢查器中,但是我想將其更改爲打開/關閉,一旦它被按下。
感謝 萬里
簡單的解決方案:創建一個IBAction
@IBAction func toggleState(_ sender: NSMenuItem) {
sender.state = sender.state == NSOnState ? NSOffState : NSOnState
}
的NSMenuItem
連接到IBAction
。如果響應控制器不相關的Application Scene
,連接IBAction
通過First Responder
(紅色立方體)
簡單,幾乎沒有代碼來做到這一點最簡單的方法:
@objc dynamic var foo: Bool = false
在Interface Builder中,單擊您的菜單項,然後轉到綁定檢查器。將「值」綁定到App Delegate,將Controller Key留空,並將Model Key Path設置爲屬性的名稱(本例中爲'foo')。
沒有第三步。
正是我在尋找驚人的,謝謝!我假設當每個狀態切換時,我可以調用一個不同的函數來對每個切換狀態進行操作? –
您可以在線後設置狀態,然後調用*不同功能。事實上,如果菜單項與場景/控制器直接相關,Charles的答案會更好 - 因此可以限制值。在這種情況下,添加'didSet'觀察者並在那裏調用你的*不同的函數*。 – vadian