2010-12-04 2 views
0

Я пишу приложение элемента состояния, у которого нет NSWindow. Я подтягиваю NSOpenPanel, когда пользователь нажимает на элемент статуса. Как это сделать, если приложение не использует NSWindow?Показать NSOpenPanel в приложении NSStatusItem

Спасибо.

ответ

3

Запустите это как модальное окно вместо листа.

+0

Отлично, это именно то, что мне было нужно. – David 2010-12-04 07:13:07

1

В методе IBAction ваше состояние, вызовите это:

window = [[NSApp currentEvent] window]; 

Вы можете передать это окно в beginSheetModalForWindow NSOpenPanel в: completionHandler: для того, чтобы отобразить открытую панель в виде листа.

Вы можете обнаружить, что элемент статуса сам закручивается и исчезает, когда появляется лист, но он появляется, когда вы отклоняете лист.

0

Вы можете просто вызвать вашу открытую панель от действия NSMenuItem как:

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); 
     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^