NSOpenPanel仅显示一次表格

时间:2012-01-02 16:04:55

标签: macos cocoa automatic-ref-counting nsopenpanel

我有一个使用NSOpenPanel的应用程序:

openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseDirectories:YES];
[openDlg beginSheetModalForWindow:MainWindow completionHandler:nil];

if ([openDlg runModal] == NSOKButton){
     NSLog(@"accept");
} else {
     NSLog(@"cancel");
}

问题是,在取消后,如果我再次显示弹出窗口,它会显示为窗口,而不是工作表(在第一次调用时执行)。我认为这是由于某些发布的事情,但我的项目使用ARC,所以我不知道。我做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你接受了NSOpenPanel提供的值,但是你没有删除面板本身,这可以通过在代码的末尾添加以下内容来完成

[openDlg close];
[NSApp endSheet:openDlg];