私のセットアップ
- XCode 4.3.2
- MacRuby 0.12(ruby 1.9.2)[universal-darwin10.0、x86_64]
- 2012年6月4日現在の毎晩の最新情報
- OS 10.7.3
ゴール
MainMenu.xibとは別のXIBにいくつかのコントロールを備えたウィンドウがあり、そのウィンドウをプログラムで開くことができます。起動時に開かないようにします。
試み
- 新しいxib(Woot.xib)を作成し、その中にウィンドウを作成しました
新しいRubyクラスを作成しました
class WootController < NSWindowController attr_accessor :window def windowNibName return 'Woot' end end
- Woot.xibのFile'sOwnerのクラスをWootControllerに設定しようとしましたが、クラス定義にある場合はそうではないことがわかりました。
< 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
質問
- どちらの試みもうまくいかないのはなぜですか?私はmacrubyとNSWindowControllerを使用して見つけることができるほぼすべての準備ができています。
WootController
クラスを継承しているのに、クラスをリンクできないのはなぜですかNSWindowController
- すべてをMainMenu.xibに配置する以外に、これを行う別の方法はありますか?