Objective c 如何使用完成处理程序范例创建自定义NSAlert Sheet方法

Objective c 如何使用完成处理程序范例创建自定义NSAlert Sheet方法,objective-c,objective-c-blocks,nsalert,Objective C,Objective C Blocks,Nsalert,我使用这个简单的通用方法已经有一段时间了,它对基于应用程序的对话框很好,但是我希望在工作表样式的对话框中使用相同的功能,并且我很难将它们组合在一起 据我所了解的文档,OS10.9及更高版本中唯一未被弃用的方法是在完成处理程序过程中使用NSAlert类。这似乎使得从通用方法返回Bool几乎不可能 我的代码: -(BOOL)confirm :(NSString*)questionTitle withMoreInfo:(NSString*)addInfo andTheActionButtonTitle

我使用这个简单的通用方法已经有一段时间了,它对基于应用程序的对话框很好,但是我希望在工作表样式的对话框中使用相同的功能,并且我很难将它们组合在一起

据我所了解的文档,OS10.9及更高版本中唯一未被弃用的方法是在完成处理程序过程中使用NSAlert类。这似乎使得从通用方法返回Bool几乎不可能

我的代码:

-(BOOL)confirm :(NSString*)questionTitle withMoreInfo:(NSString*)addInfo andTheActionButtonTitle:(NSString*)actionType{
    BOOL confirmFlag = NO;

    NSAlert *alert = [NSAlert alertWithMessageText: questionTitle
                                 defaultButton:actionType
                               alternateButton:@"Cancel"
                                   otherButton:nil
                     informativeTextWithFormat:@"%@",addInfo];
    [alert setAlertStyle:1];

    NSInteger button = [alert runModal];

    if(button == NSAlertDefaultReturn){
        confirmFlag = YES;

     }else{

        confirmFlag = NO;
     }

     return confirmFlag;

 }


 The [alert runModal] returns the value I can return.
使用较新的范例,[alert beginSheetModalForWindow:[self window]sheetWindow completionHandler:some_handler]不允许我更新或返回方法末尾的值。我知道为什么,但有没有一种方法我没有想到去实现这一点

请告诉我如何创建一个类似于我用于图纸的方法

谢谢
Mie

假设调用
确认:with moreinfo:的代码,并且从
验证
调用操作按钮:

-(void)validate
{
NSAlert *alert = [[NSAlert alloc] init];
[alert setMessageText:questionTitle];
// fill out NSAlert

[alert beginSheetModalForWindow:self.window completionHandler:^(NSModalResponse returnCode) {
    if(returnCode == NSModalResponseStop)
    {
        confirmFlag = YES;
    }
    else
    {
        confirmFlag = NO;
    }
//Rest of your code goes in here.
}];

}

您的其余代码需要完成块内。

这是一个很好的例子,但它不能解决在必须将代码放入块时调用常规对话框的问题。我想在用户按下保存按钮或删除按钮时调用与确认相同的方法。我的问题是必须在块中完成代码,而不是简单地返回confirmFlag。没有办法吗?我不这么认为。从以前的同步解决方案到当前的异步NSAlert需要重新考虑您的代码结构。我很担心。可以谢谢