Ich arbeite gerade an einem "Menüleiste" -Projekt und ich muss alle gemounteten Volumes in einem Untermenü in der Menüleiste App auflisten. Ich habe herausgefunden, wie drucken() alle aktivierten Volumes, aber ich muss mit dem Untermenü Hilfe (ohne .xib oder .storyboard Arbeit) Das ist mein „listVolumes func“Listet alle geladenen Volumes in einer Menüleiste auf Untermenü (nur programmgesteuert)
func listVolumes(sender: NSMenuItem) {
let keys = [NSURLVolumeNameKey, NSURLVolumeIsRemovableKey, NSURLVolumeIsEjectableKey]
let paths = NSFileManager().mountedVolumeURLsIncludingResourceValuesForKeys(keys, options: [])
if let urls = paths {
for url in urls {
if let components = url.pathComponents
where components.count > 1
&& components[1] == "Volumes" {
print(url)
}
}
}
}
ein unter mein Code für die " Menüleiste app“
let statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-2)
func applicationDidFinishLaunching(aNotification: NSNotification) {
if let button = statusItem.button {
button.image = NSImage(named: "StatusBarButtonImage")
}
let menu = NSMenu()
menu.addItem(NSMenuItem(title: "Volumes", action: Selector("volumes:"), keyEquivalent: ""))
menu.addItem(NSMenuItem.separatorItem())
menu.addItem(NSMenuItem(title: "Help", action: Selector("help:"), keyEquivalent: ""))
menu.addItem(NSMenuItem.separatorItem())
menu.addItem(NSMenuItem(title: "Quit", action: Selector("terminate:"), keyEquivalent: "q"))
statusItem.menu = menu
}
so meine Frage ist, wie kann ich erstellen ein Untermenü, das alle eingebundenen Laufwerke enthält (programmatisch nur)
Dank hinzuzufügen! Aber wenn ich über das Array spreche, bekomme ich den Fehler "Type (NSMenuItem) ->() entspricht nicht dem Protokoll 'SequenceType' – IliasMay
Ich habe das for in Array direkt über die 'let volumensMenuItem' Zeile gesetzt – IliasMay
Sie können ' t eine Methode aus dem Ziel-/Aktionsmuster zurückgeben, den Workflow neu gestalten, um zum Beispiel die Menüpunkte in der 'listVolumes'-Funktion zu erstellen. Dann brauchen Sie eine Eigenschaft für die Submenvereferenz. – vadian