我试图在Swift/Cocoa中为Finder扩展创建一个级联子菜单。我有以下代码:
override func menuForMenuKind(menuKind: FIMenuKind) -> NSMenu! {
let m = NSMenu(title: "")
let mi1 = NSMenuItem(title: "item1", action: nil, keyEquivalent: "")
let mi11 = NSMenuItem(title: "item11", action: nil, keyEquivalent: "")
let m2 = NSMenu(title: "")
let mi2 = NSMenuItem(title: "item2", action: nil, keyEquivalent: "")
m2.addItem(mi2)
m.addItem(mi1)
m.addItem(mi11)
m.setSubmenu(m2, forItem: mi1)
return m
}所以我想要实现的是:
item1->
item2
item11所以我真正得到的是一个平面的item1和item11菜单列表。
有什么暗示吗?
我向苹果(#18810635)提交了一个bug,得到的回复是它是(#18531883)的复制(#18531883),它仍然处于打开状态。
该文件的副本发布在OpenRadar http://openradar.appspot.com/radar?id=5772557445758976上,并在推特上发给了一位开发人员的支持者。
如果有人知道#18531883的命运--这是Finder扩展的核心存在理由?
发布于 2015-09-21 06:45:43
我将该项目升级到SWIFT2.0,并最终制作了一个工作子菜单。张贴解决方案:
override func menuForMenuKind(menuKind: FIMenuKind) -> NSMenu! {
let main = NSMenu()
let submenu = NSMenu()
let mainDropdown = NSMenuItem(title: "Some option group", action: nil, keyEquivalent: "")
main.addItem(mainDropdown)
m.setSubmenu(submenu, forItem: mainDropdown)
submenu.addItem(NSMenuItem(title: "Option 1", action: nil, keyEquivalent: ""))
submenu.addItem(NSMenuItem(title: "Option 2", action: nil, keyEquivalent: ""))
return main
}这将只在Mac 10.11+上工作,10.10.5仍然存在无法生成子菜单的错误。因此,一个好的appraoch正在为< 10.11生成一个平面菜单,以及从el capitan开始的级联。
发布于 2019-03-28 16:56:17
func constructMenu() {
let main = NSMenu()
let submenu = NSMenu()
let mainDropdown = NSMenuItem(title: "Some option group", action: nil, keyEquivalent: "")
main.addItem(mainDropdown)
main.setSubmenu(submenu, for: mainDropdown)
submenu.addItem(NSMenuItem(title: "Option 1", action: nil, keyEquivalent: ""))
submenu.addItem(NSMenuItem(title: "Option 2", action: nil, keyEquivalent: ""))
// myList.setSubmenu(mylist2, for: myList)
statusItem.menu = main
}发布于 2020-04-15 21:24:25
Finder扩展不支持macOS 10.11之前版本的子菜单。
在检查FIFinderSyncProtocol头时,代码文档中说明了这一点:
使用特定的菜单项属性:标题、操作、图像和启用。从10.11开始:标记、状态和indentationLevel也可以工作,子菜单允许。
optional func menu(for menu: FIMenuKind) -> NSMenu?https://stackoverflow.com/questions/26360209
复制相似问题