我想为Swift / Cocoa中的Finder Sync扩展创建一个级联子菜单。我有以下代码:
override func menuForMenuKind(menuKind: FIMenuKind) -> NSMenu! { let m = NSMenu(title: "") let mi1 = NSMenuItem(title: "item1",action: nil,keyEquivalent: "") let mi11 = NSMenuItem(title: "item11",keyEquivalent: "") let m2 = NSMenu(title: "") let mi2 = NSMenuItem(title: "item2",keyEquivalent: "") m2.addItem(mi2) m.addItem(mi1) m.addItem(mi11) m.setSubmenu(m2,forItem: mi1) return m }
所以我想实现的是:
item1-> item2 item11
所以我实际得到的是一个flat1和item11菜单列表。
任何提示?
我向苹果提出了一个错误(#18810635),得到一个反应,它是一个(#18531883),它仍然打开。
在OpenRadar http://openradar.appspot.com/radar?id=5772557445758976上发布文件副本,发送给开发商倡导者。
如果任何人知道的命运#18531883 – 这是Finder同步扩展的核心理由?
我已经将项目升级到Swift 2.0,并最终做了一个工作的子菜单。过帐解决方案:
override func menuForMenuKind(menuKind: FIMenuKind) -> NSMenu! { let main = NSMenu() let submenu = NSMenu() let mainDropdown = NSMenuItem(title: "Some option group",keyEquivalent: "") main.addItem(mainDropdown) m.setSubmenu(submenu,forItem: mainDropdown) submenu.addItem(NSMenuItem(title: "Option 1",keyEquivalent: "")) submenu.addItem(NSMenuItem(title: "Option 2",keyEquivalent: "")) return main }
这将只适用于Mac OS 10.11,10.10.5仍然有无法生成子菜单的错误。所以一个好的appraoch是生成一个平面菜单, 10.11,以及从el capitan开始的级联。