【问题标题】:How can I stop a NSSavePanel from closing after its completion block?如何阻止 NSSavePanel 在完成块后关闭?
【发布时间】:2013-03-02 01:11:08
【问题描述】:

如果保存文件时出现问题,我想将错误警报显示为保存工作表上的工作表,就像覆盖提示一样。但是,保存面板会在完成块完成后立即关闭,并带有错误警报。

[panel beginSheetModalForWindow:window
              completionHandler:^(NSInteger result) {
                  if (result == NSFileHandlingPanelOKButton) {
                      NSError *error;
                      // Do my saving here...
                      if (error)
                          [[NSAlert alertWithError:error] beginSheetModalForWindow:panel
                                                                     modalDelegate:nil
                                                                    didEndSelector:nil
                                                                       contextInfo:nil];
                  }
              }];

我可以取消在完成块中隐藏 NSSavePanel 吗?来自代表?从什么开始?

【问题讨论】:

    标签: objective-c macos cocoa nssavepanel


    【解决方案1】:

    我刚刚检查了 TextEdit,它在您所追求的情况下的作用——不是确认保存,而是 保存失败——如下:

    1. “保存”面板随即展开。
    2. 应用程序尝试保存但失败。 (你的块。)
    3. 应用程序在文档窗口中显示其错误表,而保存面板早已消失。

    因此,如果您想要类似 Apple 的行为,请在文档窗口中显示警报表。

    顺便说一句,你可能对presentError:modalForWindow:delegate:didPresentSelector:contextInfo:感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      相关资源
      最近更新 更多