2014-10-14 13 views
25

Ich versuche ein Kaskaden-Untermenü für eine Finder Sync-Erweiterung in Swift/Cocoa zu erstellen. Ich habe den folgenden Code:Das Untermenü für NSMenuItem (FinderSync-Erweiterung) kann nicht eingestellt werden.

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 
} 

Also, was ich versuche zu erreichen:

item1-> 
     item2 
item11 

Also, was ich eigentlich eine flache item1 und item11 Menüliste.

Irgendwelche Hinweise?


reichte ich einen Fehler mit Apple (# 18810635), bekam eine Antwort, dass es ein Duplikat (# 18531883) ist, die noch offen ist.

Posted die Kopie der Einreichung bei OpenRadar http://openradar.appspot.com/radar?id=5772557445758976, getwittert zu einem Entwickler Anwalt.

Wenn jemand das Schicksal von # 18531883 kennt - dies ist der Kern der Existenz von Finder Sync Extensions?

+0

Konnten Sie Ihr Protokoll (von der Konsole) posten? Ich habe das gleiche Problem. – qdot

+0

Hallo! Ich habe deine Frage verwendet, um meine Untermenüpunkte zu erstellen, und ich habe es geschafft, dass es funktioniert. –

+0

#Nuno Gonzales - haben Sie versucht, es in FinderSync Erweiterung oder nur ein reguläres Untermenü zu verwenden? – qdot

Antwort

2

Ich habe das Projekt auf Swift 2.0 aktualisiert und schließlich ein funktionierendes Untermenü erstellt. Buchen der Lösung:

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 
} 

Dies wird nur unter Mac OS 10.11+ arbeiten, hat 10.10.5 noch den Fehler ein Untermenü zu erzeugen, nicht in der Lage. So erzeugt ein guter appraoch ein flaches Menü für < 10.11, und eine Kaskade, die von el capitan beginnt.

+0

Hallo, weißt du, wie man einen Menüeintrag hinzufügt, wie den Menüpunkt * Move to Dropbox * [hier] (http://i.imgur.com/C9Fzbif.png)? In den Dokumenten wird erwähnt, dass Sie dieselbe 'menuForMenuKind:' Methode implementieren müssen, indem Sie die Menüart als Argument übergeben. Weißt du, warum ich diese Methode mit dem Parameter aufrufen sollte? – Isuru

+0

Sie nennen es nicht explizit menuForMenuKind: sollte für die FIFinderSync-Schnittstelle implementiert werden. Wenn Sie die Verzeichnisse registrieren, ruft FinderSync diese Methode jedes Mal auf, wenn ein Benutzer ein Dateikontextmenü öffnet. –

+0

Oh, ich verstehe. Was meinst du mit der Registrierung von Verzeichnissen? Kannst du mir bitte sagen, wie das geht? Oder verweisen Sie mich auf eine Ressource, die Sie verwendet haben? Info über Finder Sync ist knapp. – Isuru

Verwandte Themen