BeginSheet没有显示窗口

时间:2017-03-06 18:23:51

标签: cocoa nsview nswindow xamarin.mac

我的代码很简单:

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

有时候工作表窗口没有显示,并发出声音,就像窗口很忙。我的代码有什么问题吗?

我从splitViewcontroller的一个项目中调用此代码。

2 个答案:

答案 0 :(得分:3)

我刚刚犯了同样的错误,并且在相当长的一段时间内遇到了麻烦。我跟随Apple指南:

Using the Open and Save Panels

主要问题是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
    }
})