Implementando el botón ''show in finder'' en Objective C
objective-c macos (4)
En mi aplicación me gustaría crear un botón ''mostrar en el buscador''. He podido averiguar cómo abrir una ventana del buscador de ese directorio, pero no he descubierto cómo resaltar el archivo como lo hace el sistema operativo.
es posible?
Puede usar el método -selectFile:inFileViewerRootedAtPath:
así:
[[NSWorkspace sharedWorkspace] selectFile:fullPathString inFileViewerRootedAtPath:pathString];
Vale la pena mencionar que el método de owen solo funciona desde osx 10.6 o posterior (Ref: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html ).
Por lo tanto, si escribir algo para que se ejecute en las generaciones anteriores es probablemente mejor hacerlo de la manera sugerida por justin, ya que no ha quedado en desuso (aún).
// 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()
}
}
NSArray *fileURLs = [NSArray arrayWithObjects:fileURL1, /* ... */ nil];
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:fileURLs];
robado de la ventana Iniciar OSX Finder con archivos específicos seleccionados