在打开一个的MonoMac可可窗口(Opening a Cocoa window in MonoMa

2019-10-17 16:56发布

我试图完成打开一个新窗口的非常简单的任务,但我似乎完全无法做到这一点。

我使用带的MonoMac在Mac上monobjc。 当创建一个新monobjc项目,创建一个MainMenu.xib。 我已成功地添加控件和使用Xcode编辑器绑定到该文件。 当应用程序启动时自动打开此窗口。

当我试图创建一个新的窗口,但是,我不能让它在所有的显示出来。 我通过右键单击MainMenu.xib的父文件夹,然后点击添加文件中创建一个文件的.xib =>可可窗口模板。 此文件可以在XCode中只是一个MainMenu.xib进行编辑。

我接着创建一个类继承NSWindowController,我选择了这个类在我的.xib文件窗口的“文件的所有者”。 然后,我已经能够设计窗口,以出口和动作添加到控制器。

但我无法弄清楚如何打开窗口。 我已经试过这多种变化:

var f = new RegularLoginForm(); //which inherits NSWindowController
f.LoadWindow(); //I have tried without this line
f.ShowWindow(null); // I have also tried sending in the AppDelegate object (which is the controller for MainMenu.xib)

但似乎没有任何工作 - 也就是说,窗口打开从未。 有什么建议么?

编辑:这是我如何的的.xib的截图,它的配置如下: https://dl.dropbox.com/u/1545094/so_nswindowcontroller.png

Answer 1:

您可以设置RegularLoginForm作为文件的所有者在Window.xib; 但你还可以从文件的所有者连接窗口出口在Interface Builder的窗口?

在文件拥有者在IB即用鼠标右键单击,然后单击并拖动窗口出口的Window对象

进一步说,我想你的代码,对我来说崩溃在电话会议

f.ShowWindow(null)

[ERROR]致命未处理的异常信息:System.ArgumentNullException:参数不能为空。 参数名:发件人

如果我指定发件人参数,如运行良好

f.ShowWindow(this)

然而,我的环境是唯一的MonoMac; 没有monoobjc(我不知道如何或为何使用的是两个在一起吗?); 所以因人而异。



文章来源: Opening a Cocoa window in MonoMac