Подтвердить что ты не робот

Не удалось установить подменю для 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?

4b9b3361

Ответ 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, и каскад, начинающийся от эль-капитана.