我的代码很简单:
var openPanel = NSOpenPanel();
openPanel.beginSheet(this.View.Window, (obj) => {
//do stuff
openPanel.endSheet(this.View.Window);
});
有时候工作表窗口没有显示,并发出声音,就像窗口很忙。我的代码有什么问题吗?
我从splitViewcontroller的一个项目中调用此代码。
答案 0 :(得分:3)
我刚刚犯了同样的错误,并且在相当长的一段时间内遇到了麻烦。我跟随Apple指南:
主要问题是Apple文档向我们展示了使用Objective-C方法:
[panel beginSheetModalForWindow:window completionHandler:^(NSInteger result){ }
我在Xcode自动完成的帮助下对Swift进行了临时翻译:
let openPanel = NSOpenPanel()
openPanel.beginSheet(window) { (modalResponse: NSApplication.ModalResponse) in
}
不工作。运行代码时,Window的标题栏会消失+不会显示任何面板。
使用正确的Swift方法,beginSheetModal
:
openPanel.beginSheetModal(for: window) { (modalResponse: NSApplication.ModalResponse) in
}
答案 1 :(得分:2)
试试这个:
let panel = NSOpenPanel()
self.window?.beginSheet(panel, completionHandler: { (modalResponse: NSModalResponse) in
if modalResponse == NSModalResponseOK {
// do your stuff
}
})