別のNSAlertのdidEndSelectorからNSAlertを呼び出します
-
20-09-2019 - |
質問
私は別の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];
}
助け希望
所属していません StackOverflow