Учитывая следующий проект GitHub:
https://github.com/kellyjanderson/swift-custom-menue
Как связать пункт меню Custom >> Custom Action с функцией customAction в ViewController?
Учитывая следующий проект GitHub:
https://github.com/kellyjanderson/swift-custom-menue
Как связать пункт меню Custom >> Custom Action с функцией customAction в ViewController?
Определите выход вашего пункта меню в AppDelegate
@IBOutlet weak var customMenuItem: NSMenuItem!
В вашем контроллере представления сначала получите экземпляр AppDelegate
:
let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate
Получите экземпляр пункта меню, а затем привяжите к нему IBAction
:
appDelegate.customMenuItem.action = #selector(customAction(_:))
Например, вы хотите привязать действие customAction
к пункту меню. Вы можете добавить следующий код в viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
let appDelegate = NSApplication.sharedApplication().delegate as! AppDelegate
print(appDelegate.customMenuItem)
appDelegate.customMenuItem.action = #selector(customAction(_:))
}
А затем определите IBAction
func customAction(sender: NSMenuItem){
print("Custom Menu Item clicked")
}
Выход:
<NSMenuItem: 0x6080000a0720 Custom Action>
Custom Menu Item clicked
Итак, связанный вопрос Почему я не могу подключиться мое меню к моему контроллеру представления IBAction? подошло близко, но не дало мне конкретного решения. Вот как я решил это.
Сначала в ViewController вам нужно пометить свою функцию как @IBAction
@IBAction func customAction(sender: NSMenuItem){
print("Custom Menu Item clicked")
}
Как только эта функция помечена как IBAction, она будет доступна в цепочке ответчика; так что теперь вы можете щелкнуть, удерживая клавишу Control, и перетащить элемент меню на значок первого ответчика и выбрать свою функцию, в этом примере customAction.
@IBAction
перед функцией действия. - person tbodt   schedule 11.07.2016