我需要根据另一个 NSAlert 的响应提出一个 NSAlert。但是,当我尝试从第一个的 didEndSelector 调用它时,会发生各种令人讨厌的事情(例如我的文档窗口消失以及有关打印到控制台的订购问题的警告)。
有什么想法吗?
我需要根据另一个 NSAlert 的响应提出一个 NSAlert。但是,当我尝试从第一个的 didEndSelector 调用它时,会发生各种令人讨厌的事情(例如我的文档窗口消失以及有关打印到控制台的订购问题的警告)。
有什么想法吗?
您要做的是“链接”警报。
为此,您需要调用orderOut:
警报窗口。
这是文档:
如果您想在模式委托执行响应返回值的操作之前从 alertDidEndSelector 方法中关闭工作表,请将 orderOut: (NSWindow) 发送到通过将 window 发送到 alert 参数而获得的窗口对象。这允许您链接工作表,例如,通过在 alertDidEndSelector 方法中显示下一个工作表之前关闭一个工作表。请注意,在调用 alertDidEndSelector 方法之前,请注意不要在程序的其他地方调用工作表上的 orderOut:。
有一种更简单的方法,只需检查[runModal]
if 语句中的内容:
//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];
}
希望有帮助