我试图完成打开一个新窗口这个非常简单的任务,但我似乎完全无法做到这一点。
我在Mac上使用MonoMac和monobjc。在创建新的monobjc项目时,会创建一个MainMenu.xib。我已经设法使用XCode编辑器向该文件添加了控件和绑定。此窗口在应用程序启动时自动打开。
然而,当我尝试创建一个新窗口时,我根本不能让它显示出来。我创建了一个.xib文件,方法是右键单击MainMenu.xib的父文件夹,然后单击Add file => Cocoa Window Template。这个文件只需要一个MainMenu.xib就可以在XCode中编辑。
然后,我继续创建一个继承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
发布于 2013-02-08 00:24:14
您在Window.xib中将RegularLoginForm设置为文件的所有者;但是您是否也将窗口插座从文件的所有者连接到界面生成器中的窗口?
即,在IB中右键单击File的所有者,然后单击并拖动窗口插座到窗口对象
此外,我尝试过您的代码,它在调用
f.ShowWindow(null)错误致命的未处理异常: System.ArgumentNullException:参数不能为空。参数名称:发送者
如果我分配发送者参数,它运行得很好。
f.ShowWindow(this)但是,我的环境只有MonoMac;没有单一对象(我不确定如何或为什么要同时使用两者?);所以YMMV。
https://stackoverflow.com/questions/14753166
复制相似问题