我的设置
目标
在MainMenu.xib的单独XIB中有一个带有一些控件的窗口,并且能够以编程方式打开该窗口。我不希望它在发布时打开。
尝试
我制作了一个新的Ruby类
class WootController < NSWindowController
attr_accessor :window
def windowNibName
return 'Woot'
end
end
< NSWindowController
在我的类定义中,将不会。如果我从类定义中删除< NSWindowController
,那么就会填充插座,我可以将XIB中的窗口链接到我班级的窗口。从AppDelegate的applicationDidFinishLaunching
方法内部,我试过了
尝试
newWind = WootController.new
puts newWind #outputs "#<AddCredentialsDialog:0x400191180>"
newWind.window().makeKeyAndOrderFront(self) # results in no method error for nil
尝试2
newWind = WootController.initWithWindowNibName 'AddWindow'
puts newWind #outputs "#<AddCredentialsDialog:0x400191180>"
newWind.window().makeKeyAndOrderFront(self) # results in no method error for nil
问题
WootController
NSWindowController
答案 0 :(得分:1)
此解决方案有效
nib = NSNib.alloc.initWithNibNamed('Woot', bundle: nil)
newWind = WootController.new
nib.instantiateNibWithOwner(newWind, topLevelObjects:nil)
newWind.showWindow(self)
有些注意事项
在Macruby中,如果方法签名有命名参数,即使您只指定了nil或方法签名不匹配,必须必须>>才能使用它们{1}}错误。
即。 no method
与obj.foo('hello', to_whom: nil)
如果有命名参数,必须使用括号。
即。 此 obj.foo('hello')
将有效,不是 obj.foo('hello', to_whom: nil)