Mac应用SandBox:使用NSOpenPanel有关于NSRemoteOpenPanel的错误

时间:2012-04-05 09:05:03

标签: macos sandbox nsopenpanel

当我在Mac应用程序中使用沙盒时,我单击菜单项“导出”,它应该使用NSOpenPanel打开一个对话框,但它没有。这是我的代码:

[playExportPanel beginSheetModalForWindow:mainWindow
                        completionHandler: ^(NSInteger result) {
     if(result == NSFileHandlingPanelOKButton) {
             ....
     }
}]

抛出异常:-[NSRemoteOpenPanel close]: unrecognized selector sent to instance。什么是NSRemoteOpenPanel?有没有人见过这个?

1 个答案:

答案 0 :(得分:2)

我刚刚在自己的应用中解决了这个问题。我删除了[sheet close];。然后我用[sheet orderOut:self];替换它。在您的情况下,后者可能不是必需的。在我的代码中,可以在块代码返回之前显示错误表。这会导致堆叠的纸张,我不喜欢这个星座:它看起来很混乱。

您可能会从已弃用的API迁移到“-beginSheetModalForWindow:completionHandler:”并重新使用旧代码。即使删除了对-close的调用,面板也会在块返回后关闭。这可能是新API行为的一部分,但我还没有找到文档中描述的内容。