RubyCocoa一日目

「入門 Cocoa」のp70で作る日付表示AppをRubyCocoaでカンで作ってみる。

flex日記を真似して作業ログをつくってみた。

RubyCocoaインストール

どうやったかよく覚えていないが、とりあえずXCodeを入れる。
最新版RubyをたしかDarwinPortsからいれた。(もしかしたらfinkかも)
RubyCocoa最新版をダウンロード:
http://sourceforge.net/project/showfiles.php?group_id=44114

XCodeでプロジェクト作成

XCode:「新規プロジェクト」「RubyCocoa Application」
プロジェクト名はShowDate

Interface Builderでnibファイルいじり

MainMenu.nibを開く。ぜんぜんMainMenuじゃないんでMain.nibに名前かえてやったが大丈夫そう。

メニューいじり
いらなそうなメニュー項目をDelete! Delete! Delete!

メインウィンドウ作る
Instancesペイン -> Windowダブルクリック
インスペクタを開いて適当にプロパティいじってみる

  • Attributes: Window Title
  • Size: 適当にいじったらLock

ツールボックスからTextFieldを追加。サイズ等適当に調整

コントローラクラスつくる
Classesペイン -> NSObject右クリック「Subclass NSObject」
MyControllerに名前変更
Add Outlet to MyControllerで名称textDate


アウトレットはnibファイルからオブジェクトが初期化されたときに自動的に設定されるインスタンス変数。
今回はコントローラ(MVCのC)クラスをnibから自動的に初期化する設定にする。
その際、自動でtextDateインスタンス変数が先ほど作ったtextFieldのNSTextFieldオブジェクトを指すようにする。

MyController右クリック「Instantiate MyController」

Instancesペインに戻る
MyControllerを先ほど作ったTextField(UIデザイナ上)までCtrlドラッグして先ほどのtextDateアウトレットに関連づけする。

nib保存して閉じる

XCodeに戻って作業再開

グループとファイル:「ShowDate」「Classes」フォルダ右クリック:「追加」「新規ファイル」「Ruby NSObject subclass」

require 'osx/cocoa'

class MyController < OSX::NSObject
    ib_outlet :textDate
   
    def awakeFromNib
        p "testtest"
    end
end

ビルドして実行する。
ログウィンドウにtesttestが表示されてる!

awakeFromNibメソッド定義かえる。

def awakeFromNib
    @textDate.setObjectValue(OSX::NSCalendarDate.date)
end

実行。おぉ!動くぜ!