2012-05-23 9 views
17

In meiner Anwendung möchte ich einen 'Show in finder' Button erstellen. Ich habe herausgefunden, wie man ein Finder-Fenster dieses Verzeichnisses öffnet, aber nicht herausgefunden habe, wie man die Datei hervorhebt, wie es das Betriebssystem tut.Implementierung der Schaltfläche 'In Finder anzeigen' in Objective C

Ist das möglich?

+0

"wie man ein Finder-Fenster dieses Verzeichnisses öffnet"? – onmyway133

+0

Mögliches Duplikat von [OSX Finder Fenster mit ausgewählten Dateien starten] (http://stackoverflow.com/questions/7652928/launch-osx-finder-window-with-specific-files-selected) – Eonil

Antwort

15

Sie NSWorkspace Methode -selectFile:inFileViewerRootedAtPath: wie diese verwenden:

[[NSWorkspace sharedWorkspace] selectFile:fullPathString inFileViewerRootedAtPath:pathString]; 
+0

Fehler -600 Erhöhung für mich (Osx 10.6.5) – user23790

3

Seine erwähnenswert, dass nur Egons Methode von osx 10.6 oder höher (Ref: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html) arbeitet.

Also wenn Sie etwas schreiben, um auf den älteren Generationen zu laufen, ist es wahrscheinlich besser, es in der von Justin vorgeschlagenen Weise zu tun, da es (noch) nicht veraltet ist.

+2

Nur als Antwort hinzugefügt, weil ich noch nicht auf Sachen "kommentieren" kann lol – andrewktmeikle

0
// Place the following code within your Document subclass 

// enable or disable the menu item called "Show in Finder" 
override func validateUserInterfaceItem(anItem: NSValidatedUserInterfaceItem) -> Bool { 
    if anItem.action() == #selector(showInFinder) { 
     return self.fileURL?.path != nil; 
    } else { 
     return super.validateUserInterfaceItem(anItem) 
    } 
} 

// action for the "Show in Finder" menu item, etc. 
@IBAction func showInFinder(sender: AnyObject) { 

    func showError() { 
     let alert = NSAlert() 
     alert.messageText = "Error" 
     alert.informativeText = "Sorry, the document couldn't be shown in the Finder." 
     alert.runModal() 
    } 

    // if the path isn't known, then show an error 
    let path = self.fileURL?.path 
    guard path != nil else { 
     showError() 
     return 
    } 

    // try to select the file in the Finder 
    let workspace = NSWorkspace.sharedWorkspace() 
    let selected = workspace.selectFile(path!, inFileViewerRootedAtPath: "") 
    if !selected { 
     showError() 
    } 

}