2

簡単な質問:NSSavePanelで押されたキャンセルボタンのアクションを処理したい。デリゲートクラスでパネルを使用しています:

NSSavePanel *save = [NSSavePanel savePanel];
[save setDelegate:self];
[save runModal];

私はドキュメントでこれを見ました:

ok:このアクションメソッドは、ユーザーがパネルの[OK]ボタンをクリックしたときに呼び出されます。

  • (IBAction)ok:(id)sender

しかし、私はその方法を処理するためにパネルに言う方法がわかりません...

ありがとう。

4

2 に答える 2

3

ノンブロッキングパネルで別の解決策を見つけました:

[save beginWithCompletionHandler:^(NSInteger result) {
    if (result == NSFileHandlingPanelOKButton)
    {
        NSLog(@"Ok pressed.");
    }
    else if (result == NSFileHandlingPanelCancelButton)
    {
        NSLog(@"Cancel pressed.");
    }
}];
于 2011-09-21T08:09:17.797 に答える
1

押されたキャンセルを処理したいだけの場合:

 NSSavePanel *panel = [NSSavePanel savePanel]; 
 panel.delegate = self;

 if ([panel runModal] == NSOKButton) {
     // Got it, use the panel.URL field for something
 } else {
     // Cancel was pressed...
 }
于 2011-09-20T21:54:13.293 に答える