RubyCocoaでアプリを作ろう::インターフェース

インターフェースの作成

次にインターフェースの作成に入ります。InterfaceBuilderのチュートリアルとしては「Cocoaはやっぱり!」の1〜3章あたりが詳しいので、はじめてInterfaceBuilderに触るという方は参考にしてください。(*1

全体的な配置は上図のとおりです。TextFieldの属性で、"Send Action" を "only on enter" に設定しておいてください。

次にクラスの作成です。NSObjectのサブクラスとして "CalcCntl" クラスを作り、outletとして "field" 、actionとして "calc" を作ります。やり方は色々ありますが、"CalcCntl"クラスを選択してからInfoパネルを出し、その上で作成する方法が直感的でわかりやすいと思います。なお、Infoパネルは「shiftキー + コマンドキー + "i" 」で表示されます。

この "CalcCntl"クラスをインスタンス化(ClassesメニューのInstantiateを実行)して、TextFieldへ向かって結線(controlキーを押したまま、CalcCntlインスタンス上でマウスボタンを押し、そこからTextFieldへとドラッグ)します。それからInfoパネルのポップアップボタンで "connections" を選び、"field"outletをTextFieldにconnectしてください。

また、同じようにTextFieldからCalcCntlインスタンスへ、つまり先ほどと逆方向にも結線し、Infoパネルで "calc"actionをconnectします。これは、TextField内でenterが押されたら CalcCntlインスタンスに対して"calc"メッセージを送るという意味です。メッセージを受けたときCalcCntlインスタンスは"calc"アクションを実行します。

Objective-C/JAVAでプログラミングする場合、ここまで作り終わったらInterfaceBuilderからファイル作成を行いますが、RubyCocoaの場合はこの機能を使っても意味がありません。保存後にProjectBuilderへ戻り、最初に作った "CalcCntl.rb" のコーディングを行います。

*1(参考にしてください):というより、Cocoa関係の本やサイトは、Objective-CやJAVAそのものよりもCocoaフレームワークの利用方法を解説している場合がほとんどなので、そこで書かれていることはRubyCocoaにも簡単に応用可能です。【参考】RubyCocoaでCocoa本