0

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

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

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

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

4

1 回答 1

0

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

[openDlg close];
[NSApp endSheet:openDlg];
于 2012-10-03T13:09:55.190 回答