macos cocoa swift xcode6 xcode6gm

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.