当窗口关闭时,如何从警报中收集输入,以确定是否保存在objective-c mac应用程序中?

当窗口关闭时,如何从警报中收集输入,以确定是否保存在objective-c mac应用程序中?,objective-c,macos,input,Objective C,Macos,Input,我这样做是为了在Xcode开发的objective-c mac应用程序中,当用户尝试关闭主窗口时,会出现一个警报,询问用户是否希望保存。如何从该警报收集用户的输入 我知道您可以使用此代码生成带有各种选项和文本的警报: NSAlert *alert = [[NSAlert alloc] init]; [alert addButtonWithTitle:@"Save and Quit"]; [alert addButtonWithTitle:@"Quit"]; [alert setMessageTe

我这样做是为了在Xcode开发的objective-c mac应用程序中,当用户尝试关闭主窗口时,会出现一个警报,询问用户是否希望保存。如何从该警报收集用户的输入

我知道您可以使用此代码生成带有各种选项和文本的警报:

NSAlert *alert = [[NSAlert alloc] init];
[alert addButtonWithTitle:@"Save and Quit"];
[alert addButtonWithTitle:@"Quit"];
[alert setMessageText:@"Would you like to save before you quit?"];
[alert setInformativeText:@"You are about to quit. Would you like to save your progress?"];
[alert setAlertStyle:NSWarningAlertStyle];
[alert beginSheetModalForWindow:[self window] modalDelegate:self didEndSelector:@selector(null) contextInfo:nil];
我知道你可以使用

- (void)windowWillClose:(NSNotification *)notification 
方法在主窗口关闭时运行,但如何从该警报中收集用户的输入?

面板实际上不是用于收集信息,而是用于向用户发出某种状态的警报,然后记录用户按下的响应按钮

我过去必须做的是使用窗口控制器、文本视图和选择器创建自己的窗口/xib,并从那里管理所有内容

另一方面,如果您只是在谈论获取按钮被按下的状态,如链接所示,类似这样的操作将起作用:

if ([alert runModal] == NSAlertFirstButtonReturn) {
    // OK clicked, delete the record
    [self deleteRecord:currentRec];
}

我认为BeginSheetModelForWindow的文档可能包含以下答案: