我正在用MonoMac(C#)开发一个Cocoa应用程序。
我有一个继承MyWindowController
的班级MonoMac.AppKit.NSWindowController
,并打开此窗口的新实例,如下所示:
MyWindowController mwc = new MyWindowController();
mwc.Window.MakeKeyAndOrderFront(this);
但是如何将其作为模态对话框打开?当对话框打开时,我的应用程序中没有其他任何内容被执行是必要的,所以我不能使用窗口表(它只阻止当前窗口)。我找不到任何其他似乎在我的控制器上做我想要的东西。在Windows上,我只需通过调用:
即可完成此操作mwc.ShowDialog();
所以我想要的是MonoMac相当于ShowDialog()
,我相信。
答案 0 :(得分:4)
在发布问题之前,我花了将近三个小时试图解决这个问题,但当然我在问完后就找到了解决方案。
看起来我需要使用NSApplication对象:
NSApplication.SharedApplication.RunModalForWindow(ewc.Window);
答案 1 :(得分:2)
我在上面的答案中取得了成功,但是在按下“关闭”按钮的情况下却无法解除模态。解决方案是添加代码
[Export ("windowWillClose:")]
public void WindowWillClose(NSNotification notification)
{
Console.WriteLine("windowWillClose:");
NSApplication.SharedApplication.StopModal ();
}
到窗口控制器,然后将窗口控制器设置为窗口的委托,在Interface Builder中,右键单击窗口并从“委托”拖动一行到“文件所有者”块。