Xcode4でhello world

iPhoneアプリを作ってみよう(Xcode4編)第1回:じゃんけんゲーム - もとまか日記Z
上記記事を参考にしつつ、helloworldに挑戦します。
画面のボタンを押したら画面上のラベルをhello worldに書き換えるようなアプリにしてみます。
かなりあいまいな理解の部分もあるので、鵜呑みにしないよう気をつけてください。

xcode4は有料

xcode4からは有料なんだそうです。iTunesStoreで\600で買いました。4.5GBあり、DLには結構時間がかかりました。

プロダクト作成

テンプレートView-Based Applicationで作ってみます。


Product Name:HelloWorld
Company Identifer:com.example

Company IdentiferはJavaのパッケージみたいなものなんでしょうか?とりあえず調べるのは後回しにします。

レイアウトはxibファイルで指定

画面上のコンポーネントは、xibファイルに定義するようです。
ラベルやボタンをドラッグアンドドロップで配置してみます。

xibファイルの中身は?

xibファイルをOpen As Source Codeで開いてみると、普通のxmlのように見えます。
が、ひとつのコンポーネントに対応してる感じに見えます。IBUIViewという部分があり、この上にコンポーネントを配置していくのがView-Basedってことでしょうか。

ボタンを押したときの処理を記述する

HelloWorldViewController.xmlに定義したボタンを押したとき(タップ)の処理は、
HelloWorldViewController.hに定義するみたいです。

#import <UIKit/UIKit.h>

@interface HelloWorldViewController : UIViewController {
    
}

// アクションメソッド
-(IBAction) onTouchUpInside:(id)sender;

@end

onTouchUpInsideというメソッドを定義しました。

これを、xibエディタでボタンのTouch up Insideイベントに設定します。ドラッグアンドドロップで設定。
xibファイルのオーナーがHelloWorldViewControllerなので、*.hで定義したアクションメソッドをxibファイルから見れるようになってます。

hファイルで定義したメソッドがアクションメソッドかどうかは、戻り値がIBActionかどうかで判別されてるようです。

interfaceを実装

hファイルで宣言したアクションメソッドはmファイルで実装します。とりあえず空のメソッドを記述しmす。

#import "HelloWorldViewController.h"

@implementation HelloWorldViewController

// アクションメソッドの実装
- (IBAction) onTouchUpInside:(id)sender {
    // ここにボタンが押されたときの処理を書く
}

- (void)dealloc
{
    [super dealloc];
}

// 後略

@end

画面上のコンポーネントをコードから参照する

ボタンが押されたときにラベルを書き換えるには、ラベルへの参照を取得する必要があります。そのためには、ViewControllerがラベルへの参照を保持するフィールドを定義します。
まず、hファイルにラベルの参照を保持するフィールドを定義します。

#import <UIKit/UIKit.h>

@interface HelloWorldViewController : UIViewController {
    IBOutlet UILabel *label;
}

// アクションメソッド
-(IBAction) onTouchUpInside:(id)sender;


@end

ただフィールドを定義するだけではだめで、IBOutletという修飾子が必要です。これをつけて定義したフィールドは、xibファイルから参照できるので、アクションメソッドのようにD&Dで設定します。

設定したら、mファイル内に実装したアクションメソッド内で、ラベルを書き換えるコードを記述します。

// アクションメソッドの実装
- (IBAction) onTouchUpInside:(id)sender {
    label.text = @"hello world!";
}

これでプロダクトをRunさせ、iOSシミュレータ上に表示されたボタンをクリックすると、ラベルが書き変わることを確認できました。

注意

最初にも書きましたが、かなり曖昧な理解で書いている部分もあるので、鵜呑みは禁物です。