質問

私は別のNSAlertからの応答に基づいてNSAlertを起動する必要があります。私は最初の1のdidEndSelectorからそれを呼び出すしようとすると、しかし、嫌なことのすべての種類は、(私のドキュメントウィンドウの消失やコンソールに問題印刷の注文についての警告のように)起こります。

任意の考え?

役に立ちましたか?

解決

何をしようとしていることは「チェーン」の警告である。

あなたは警告ウィンドウにorderOut:を呼び出す必要があり、これを行うには。

ここでのドキュメントです。

  

あなたがからシートを却下する場合   alertDidEndSelectorメソッド内   モーダルデリゲートは行って前に   復帰に応じてアクション   に(NSWindowの):値、orderOutを送信   送信によって得られたウィンドウオブジェクト   アラートの引数にウィンドウ。この   以下のために、チェーンシートにあなたを可能に   例えば、一枚のシートを却下することによって   内からの次を示す前に、   alertDidEndSelector方法。注意   あなたが呼び出すことがないように注意する必要があること   orderOut:シート上の他の場所から   前に、あなたのプログラムで   alertDidEndSelectorメソッドが呼び出されます。

他のヒント

単にif文で[runModal]の内容を確認し、もっと簡単な方法があります:

//setup the dialog
NSAlert *networkErrorDialog = [NSAlert alertWithMessageText:@"Couldn't connect to the server" defaultButton:@"Network Diagnostics" alternateButton:@"Quit" otherButton:nil informativeTextWithFormat:@"Check that your computer is connected to the internet and make sure you aren't using a proxy server or parental controls"];

//show the dialog inside an IF, 0=the first button 1=the 2nd button etc
                if ([networkErrorDialog runModal]==0) {
                    //quit
                    [[NSApplication sharedApplication] terminate:self];
                } else {
                    //Network Diagnostics
                    [[NSWorkspace sharedWorkspace] launchApplication:@"Network Diagnostics"];
                    [[NSApplication sharedApplication] terminate:self];
                }

助け

希望

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top