如何在 NSPopUpButton 的子菜单中获取 NSMenuItem 的标题?
How can I get the title of a NSMenuItem in a submenu of a NSPopUpButton?
我可以在 NSPopUpButton
的 NSMenu
的顶层获取 NSMenuItem
的名称。
我通过向 NSPopUpButton
:
添加一个动作来做到这一点
@IBAction func menuDropdownAction(_ sender: Any) {
let titleOfSelectedItem = (sender as AnyObject).titleOfSelectedItem
print (titleOfSelectedItem! as Any)
}
但是如果我向 NSMenu
添加子菜单,它只是 returns nil
.
在我看来,应用于 NSPopUpButton
的 .titleOfSelectedItem
应该适用于隐藏在其子菜单中的项目,但似乎不行!
任何帮助都将不胜感激,有一个类似的问题,但它对 cocoa 已有 10 多年的历史,对我没有用。 link
Swift 是一种强类型语言,您可以通过编写 Any
和 AnyObject
.
来关心类型
将sender
替换为真实类型
@IBAction func menuDropdownAction(_ sender: NSPopUpButton) {
然后您可以访问弹出按钮的所有属性
let titleOfSelectedItem = sender.titleOfSelectedItem
let menu = sender.menu!
let firstMenuItem = menu.item(at: 0)!
let subMenu = firstMenuItem.submenu!
我可以在 NSPopUpButton
的 NSMenu
的顶层获取 NSMenuItem
的名称。
我通过向 NSPopUpButton
:
@IBAction func menuDropdownAction(_ sender: Any) {
let titleOfSelectedItem = (sender as AnyObject).titleOfSelectedItem
print (titleOfSelectedItem! as Any)
}
但是如果我向 NSMenu
添加子菜单,它只是 returns nil
.
在我看来,应用于 NSPopUpButton
的 .titleOfSelectedItem
应该适用于隐藏在其子菜单中的项目,但似乎不行!
任何帮助都将不胜感激,有一个类似的问题,但它对 cocoa 已有 10 多年的历史,对我没有用。 link
Swift 是一种强类型语言,您可以通过编写 Any
和 AnyObject
.
将sender
替换为真实类型
@IBAction func menuDropdownAction(_ sender: NSPopUpButton) {
然后您可以访问弹出按钮的所有属性
let titleOfSelectedItem = sender.titleOfSelectedItem
let menu = sender.menu!
let firstMenuItem = menu.item(at: 0)!
let subMenu = firstMenuItem.submenu!