BeginSheet无法显示窗口

3

I have simple code :

var openPanel = NSOpenPanel();
openPanel.beginSheet(this.View.Window, (obj) => {
    //do stuff
    openPanel.endSheet(this.View.Window);
});

有时候,工作表窗口不会显示出来,但会发出忙碌的声音。我的代码有问题吗?

我从splitViewcontroller的一个项目中调用了这段代码。

2个回答

4
我刚犯了同样的错误,花费了相当长的时间来解决它。我正在按照Apple指南进行操作:

使用开启和保存面板

主要问题是,Apple文档展示给我们使用Objective-C方法:
[panel beginSheetModalForWindow:window completionHandler:^(NSInteger result){    }

我使用Xcode自动补全的帮助进行了一个即兴的Swift翻译:

let openPanel = NSOpenPanel()
openPanel.beginSheet(window) { (modalResponse: NSApplication.ModalResponse) in
}

这种方法是无效的。运行代码后,窗口标题栏会消失,且不会显示面板。

请使用正确的Swift方法beginSheetModal

openPanel.beginSheetModal(for: window) { (modalResponse: NSApplication.ModalResponse) in

}

3

试试这个:

let panel = NSOpenPanel()
self.window?.beginSheet(panel, completionHandler: { (modalResponse: NSModalResponse) in
    if modalResponse == NSModalResponseOK {
        // do your stuff
    }
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接