1

NSWindowを持たないステータスアイテムアプリを書いています。ユーザーがステータス項目をクリックしたときにNSOpenPanelをプルアップします。アプリがNSWindowを利用しない場合、これをどのように行うのでしょうか?

ありがとう。

4

3 に答える 3

4

シートではなくモーダルウィンドウとして実行します。

于 2010-12-04T00:33:58.800 に答える
1

ステータスアイテムのIBActionメソッドで、次のように呼び出します。

window = [[NSApp currentEvent] window];

次に、そのウィンドウをNSOpenPanelのbeginSheetModalForWindow:completionHandler:に渡して、開いているパネルをシートとして表示できます。

シートが表示されると、ステータスアイテム自体が丸まって消えることがありますが、シートを閉じると再び表示されます。

于 2010-12-04T04:00:56.803 に答える
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);
        }
    }
于 2015-05-05T11:58:50.360 に答える