我需要根据另一个NSAlert的回复提出一个NSAlert。但是,当我尝试从第一个的didEndSelector调用它时,会发生各种令人讨厌的事情(比如我的文档窗口消失,并且警告有关打印到控制台的排序问题)。
有什么想法吗?
答案 0 :(得分:5)
您要做的是“链接”警报。
要执行此操作,您需要在提醒窗口中调用orderOut:
。
这是文档:
如果要从中解除工作表 在alertDidEndSelector方法中 在模态代表执行之前 响应回报的行动 价值,发送orderOut :( NSWindow)来 通过发送获得的窗口对象 窗口到警报参数。这个 允许你链表,为 例如,通过解雇一张纸 在从内部展示下一个之前 alertDidEndSelector方法。注意 你应该小心不要打电话 orderOut:在其他地方的工作表上 在您的计划之前 调用alertDidEndSelector方法。
答案 1 :(得分:4)
有一种更简单的方法,只需在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];
}
希望有所帮助