行动
selector
sender
对象,就像使用接口生成器时一样。所以你的
setReminder(_:)
func setReminder(_ sender: Any) {
// Coerce sender to NSMenuItem and use it to make your decisions
}
或:
func setReminder(_ sender: NSMenuItem) {
// Don't do any coercion work you don't need to doâ¦
}
你也可以设置
tag
property
的
NSMenuItem
标签
属性是
Int
打一个与你的价值观很匹配的字。
在创建多个条目时,可以使用
for in
循环以遍历
array
dictionary
,创建新的
NSMenuItem
对于每个条目。所以我们可以把你的原始代码改成这样的例子
dictionary
:
let delaySubMenu = NSMenu()
let delays = ["5 Minutes" : 5, "10 Minutes" : 10, "15 Minutes" : 15] // This is a dictionary of String:Int
for (titleKey, value) in delays {
let menuItem = NSMenuItem(title: titleKey, action: #selector(setReminder(_:)), keyEquivalent: nil)
menuItem.tag = value
delaySubMenu.addItem(menuItem)
}
func setReminder(_ sender: NSMenuItem) {
let delayValue = sender.tag // delayValue is a Int by inference from tag
// Do something with your delay value
}
免责声明