2010-12-04 10 views
0

Ich schreibe eine Statuselement-App, die kein NSWindow besitzt. Ich rufe ein NSOpenPanel auf, wenn der Benutzer auf das Statuselement klickt. Wie würde man das machen, wenn die App kein NSWindow benutzt?NSOpenPanel in einer NSStatusItem-App anzeigen

Danke.

Antwort

3

Führen Sie es als modales Fenster statt als ein Blatt.

+0

Perfect, das ist genau das, was ich brauchte. – David

1

In Ihrem Status Artikel IBAction Methode nennt dies:

window = [[NSApp currentEvent] window]; 

Anschließend können Sie das Fenster zu NSOpenPanel des beginSheetModalForWindow passieren: completionHandler: um die offene Platte als Folie angezeigt werden soll.

Sie können feststellen, dass das Statuselement selbst sich zusammenrollt und verschwindet, wenn das Blatt angezeigt wird. Es wird jedoch wieder angezeigt, wenn Sie das Blatt schließen.

0

Sie können einfach Ihre offene Panel von NSMenuItem Handeln nennen wie:

NSOpenPanel *panel = [NSOpenPanel openPanel]; 
    [panel setAllowsMultipleSelection:YES]; 
    [panel setCanChooseDirectories:YES]; 

    NSUInteger result = [panel runModal]; 
    NSMutableArray *paths = [NSMutableArray array]; 

    if(result == NSFileHandlingPanelOKButton) { 
     for (NSURL *url in [panel URLs]) { 
      NSLog(@"%@", url); 
     } 
    }