【问题标题】:NSOpenPanel appears as sheet only onceNSOpenPanel 仅作为工作表出现一次
【发布时间】:2012-01-31 22:32:47
【问题描述】:

我有一个使用 NSOpenPanel 的应用:

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

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

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

【问题讨论】:

  • 你能把代码贴在你再次显示面板的地方吗?它不起作用?这个问题是否与 ARC 或内存管理有关是值得怀疑的。

标签: macos cocoa automatic-ref-counting nsopenpanel


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    • 2016-02-17
    • 2011-09-06
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多