2012-05-23 20 views
17

W mojej aplikacji chciałbym utworzyć przycisk "pokaż w wyszukiwarce". Byłem w stanie dowiedzieć się, jak wyskoczyć do okna wyszukiwarki tego katalogu, ale nie zorientowałem się, jak podświetlić plik, tak jak robi to system operacyjny.Implementacja przycisku "pokaż w wyszukiwarce" w Celu C

Czy to możliwe?

+0

"jak wyświetlić okno wyszukiwania w tym katalogu"? – onmyway133

+0

Prawdopodobny duplikat [Uruchom okno przeglądarki OSX z wybranymi plikami] (http://stackoverflow.com/questions/7652928/launch-osx-finder-window-wspecific-files-selected) – Eonil

Odpowiedz

15

Można użyć NSWorkspace metodę -selectFile:inFileViewerRootedAtPath: tak:

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

Błąd -600 dla mnie (osx 10.6.5) – user23790

3

Warto wspomnieć, że metoda Owena działa tylko z OSX 10.6 lub nowszy (Ref: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html).

Więc jeśli piszesz coś, co można uruchomić na starszych pokoleniach, prawdopodobnie lepiej jest zrobić to w sposób sugerowany przez Justina, jako że nie został przestarzały (jeszcze).

+2

Dodałem to tylko jako odpowiedź, ponieważ nie mogę "komentować" rzeczy jeszcze 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() 
    } 

}