macos - No se puede establecer el submenú para NSMenuItem(extensión FinderSync)
cocoa swift (1)
Estoy intentando crear un submenú en cascada para una extensión Finder Sync en Swift / Cocoa. Tengo el siguiente código:
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
}
Entonces, lo que estoy tratando de lograr es:
item1->
item2
item11
Entonces, lo que realmente obtengo es una lista de menús item1
y item11
plana.
¿Alguna pista?
Presenté un error con Apple (# 18810635), recibí una respuesta que es un duplicado de (# 18531883) que todavía está abierto.
Publicó la copia de la presentación en OpenRadar http://openradar.appspot.com/radar?id=5772557445758976 , tuiteó a un defensor de desarrolladores.
Si alguien conoce el destino de # 18531883, ¿esta es la razón de ser de las extensiones de sincronización de Finder?
Actualicé el proyecto a Swift 2.0 y finalmente hice un submenú de trabajo. Publicar la solución:
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
}
Esto solo funcionará en Mac OS 10.11+, 10.10.5 todavía tiene el error al no poder generar un submenú. Entonces, un buen enfoque está generando un menú plano para <10.11 y una cascada a partir de El Capitán.