2012-05-23 12 views
17

Nella mia domanda vorrei creare un 'Mostra nel Finder' pulsante. Sono stato in grado di capire come pop-up una finestra del Finder di quella directory, ma non hanno capito come per evidenziare il file, come il sistema operativo fa.Implementazione pulsante in Objective C

È possibile?

+0

"come visualizzare una finestra di ricerca di tale directory"? – onmyway133

+0

Eventuali duplicati di [lancio finestra OSX Finder con file specifici selezionati] (http://stackoverflow.com/questions/7652928/launch-osx-finder-window-with-specific-files-selected) – Eonil

risposta

15

È possibile utilizzare NSWorkspace metodo -selectFile:inFileViewerRootedAtPath: come questo:

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

Errore -600 raising per me (OSX 10.6.5) – user23790

3

Vale la pena ricordare che il metodo di Owen funziona solo da OSX 10.6 o versioni successive (Rif: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html).

Quindi, se la vostra scrittura qualcosa di girare sulle vecchie generazioni la sua, probabilmente meglio farlo nel modo suggerito da Justin come la sua non stato deprecato (ancora).

+2

aggiunta solo questo come una risposta perché non posso "commento" su roba ancora 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() 
    } 

}