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ファイルから見れるようになってます。
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シミュレータ上に表示されたボタンをクリックすると、ラベルが書き変わることを確認できました。
注意
最初にも書きましたが、かなり曖昧な理解で書いている部分もあるので、鵜呑みは禁物です。