MonoTouchでHelloWorld!!

MonoTouchを使ってC#でHelloWorldをやってみましょう。

MonoDevelopを起動して、ソリューションの作成。
ファイル→新規→ソリューションを選択すると、ソリューション作成ダイアログが表示されます。

ソリューション名:Helloworld_Sol
プロジェクト名:Helloworld

まぁ、このあたりは任意で指定してください。

次に『プロジェクトの機能』を聞かれますが、そのまま何も選択せずOK。

すると新しいプロジェクトが生成される。
構成はこんな感じ。

□Main.cs
Applicationクラスにはmain関数がある。
今回、実行処理はAppdelegateクラスのFinishedLaunching関数内に記述します。
□MainWindow.xib
これはアプリのGUI定義ファイルです。

MainWindow.xib をダブルクリックするとInterface BuilderというGUI設計ツールが起動します。

Interface Builder上でラベルとボタンを配置する。
Library(画面左)からラベルとボタンをドラッグしてWindow(画面中央上)に配置。

各コントロールのプロパティは画面右(名称が分からない)の項目で定義する。
ラベルとボタンのTextに適当な文字を入力。

Interface Builderに定義しただけのの状態では、MonoDevelopが各コントロールの変数名やイベントを認識できていません。

ここで各コントロールのアウトレットを作成する。
(※サンプルはSnow Leopard
各コントロールのアウトレット作成はLeopardとSnow Leopardで操作方法が違います。)

Library→Classesタブ→Appdelegat(リスト一覧から)の順で選択します。

下段Appdelegateで『outlets』タブを選択し一番下の『+』ボタンをクリック。

各コントロールのOutlet(変数名)を定義し、MonoTouchのソース中で使用する変数名として認識させる。
Type項目はid(C#で言うところのObject型?)のままでOK。
逆にソース側からアクセスする必要のないコントロールは定義する必要は無いように思います。

MainWindow.xib(画面中央下)でAppDelegateを選択します。

その後右画面上段のタブConnectionsをクリックします。

各コントロールのOutletsが一覧に表示されることが確認できました。

この状態ですでにwindowコントロールの右の丸は●になっていると思います。

そこでほかの各コントロールの右側の○をドラッグしながらWindow(画面上)内の各コントロールのところでドロップします。

コントロール右の○が●になればバインド完了。
ちなみに各コントロールからAppdelegateにバインドする方法もあるのでお好みで。

次に各コントロールのActionsにイベントを追加します。
Library→Classesタブ→Appdelegat(リスト一覧から)の順で選択、下段Appdelegateで『Actions』タブを選択し一番下の『+』ボタンをクリック。

今回はボタンクリックイベントを定義。

再びMainWindow.xib(画面下)でAppDelegateを選択し、その後画面右のタブConnectionsをクリックするとReceivd Actionsに定義したイベントが追加されている。

ここで、アクションの右の○をドラッグしながらWindow(画面上)内のボタンのところでドロップします。
ドロップしたコントロールのイベント一覧が表示されるので任意で選択する。
今回は『TouchDown』を選択。

これでMonodevelopとの連携が取れているはず。

interface Builderを保存して終了します。

MonodevelopでMainWindow.xib.designer.csを開くとinterface Builderで定義したコントロールとイベントが追加されているのが確認できます。

では実際の処理部分を記述しましょう。
AppDelegateクラスにボタンイベントを記述。


Partial btnHelloClick (MonoTouch.UIKit.UIButton sender)
{
this.lbnHello.Text = "Hello World!";
};
MainWindow.xib.designer.csにPartialと宣言されているため、こちらでも同じ関数名に。

では実際に動かしてみよう。

ボタンをクリックすると、

おお、表示されました。