Не удалось установить подменю для NSMenuItem (расширение FinderSync)
Я пытаюсь создать каскадное подменю для расширения Finder Sync в Swift/ Cocoa. У меня есть следующий код:
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
.
Любые подсказки?
Я подал ошибку с Apple (# 18810635), получил ответ, что это дубликат (# 18531883), который все еще открыт.
Отправил копию заявки на OpenRadar http://openradar.appspot.com/radar?id=5772557445758976, в твиттере защитника разработчика.
Если кто-то знает судьбу # 18531883 - это основной смысл для расширений Finder Sync?
Ответы
Ответ 1
Я обновил проект до Swift 2.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 OS 10.11+, 10.10.5 все еще есть ошибка, из-за которой невозможно создать подменю. Таким образом, хорошая оценка создает плоское меню для < 10.11, и каскад, начинающийся от эль-капитана.