鉴于以下GitHub项目:
https://github.com/kellyjanderson/swift-custom-menue
如何链接菜单项Custom>>自定义操作,到ViewController中的函数customAction?
答案 0 :(得分:3)
在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
答案 1 :(得分:0)
所以关联的问题Why can't I connect my menu to my view controller IBAction?接近但没有为我提供具体的解决方案。以下是我解决这个问题的方法。
首先在ViewController中,您需要将您的函数标记为@IBAction
@IBAction func customAction(sender: NSMenuItem){
print("Custom Menu Item clicked")
}
一旦该功能被标记为IBAction,它将在响应者链中可用;所以现在你可以控制点击并将菜单项拖到第一个响应者图标并选择你的功能,在本例中是customAction。