連載
» 2009年05月14日 00時00分 公開

iPhone開発。まずはサンプルを動かしてみようここが大変だよiPhone開発(2)(3/3 ページ)

[佐々木義一郎,コニット]
前のページへ 1|2|3       

Hello Worldを作ってみる

 XcodeとInterfaceBuilderを使って、ボタンを押したらテキストボックスにHelloWorldと表示されるアプリを作ってみましょう。

・プロジェクトの作成

 メニューのファイル>新規プロジェクトから、ViewBasedApplicationを「Example02」として作成します。

プロジェクトの新規作成 プロジェクトの新規作成

・テンプレートソースコードの解説テンプレートソースコードの解説

 まずはOtherSourcesにあるmain.mを開いてください。例に漏れずmain関数からプログラムはスタートします。

Main.m

 NSAutoreleasePoolの初期化と開放処理以外は、UIApplicationMain関数を実行しています。このUIApplicationMain関数では、XIBリソースのロードと初期化を行い、完了後にInfo.plistファイルに記述しているメインXIBのApp Delegateのクラス(今回はExample02AppDelegateクラス)に対して、applicationDidFinishLaunching:(UIApplication)applicationをコールします。

Example02AppDelegate.m

 applicationDidFinishLaunching:(UIApplication)application では、windowオブジェクトにviewControllerオブジェクトのviewプロパティをsubViewに追加しています。これによってExample02ViewControllerが画面に表示されるようになります。

 Example02AppDelegateクラスでは、windowオブジェクトやviewControllerオブジェクトの生成・初期化は一切行っていません。

 これらのオブジェクトはXIBロード時に自動でXIBの設定どおりにすべてバックグラウンドでやってくれています。

Example02ViewController.m

 このソースファイルは、ほとんどがコメントアウトされています。必要な場合はコメントアウトを外して、自分で実装していきます。

Hello Worldの実装

 今回は、ボタンを押したときにHelloWorldと表示するアプリケーションを作成するので、ボタンのタップイベント時に実行する関数とテキストボックス変数を作成します。

・テキストボックス変数の作成

Example02ViewController.h
@interface Example02ViewController:UIViewController{
    IBOutlet UITextField*helloText; 
}

 IBOutletはInterfaceBuilderで使用する変数だということを宣言する構文です。これがないとInterfaceBuilderで見つけることができません。

・ボタンハンドラの作成

Example02ViewController.h
@interface Example02ViewController:UIViewController{ 
IBOutlet UITextField * helloText; 
} 
-(IBAction)tapHello:(id)sender;

 ボタンハンドラとしてtapHello関数を宣言します。InterfaceBuilderでイベント設定する関数はすべてこの形式(戻り値がIBActionで引数がid型1つ)で宣言します。

Example02ViewController.m
-(IBAction)tapHello:(id)sender{
helloText.text = @”HelloWorld!”;
}

 タップされた場合には、helloTextのtextプロパティに文字列Helloをセットします。ソースコードの修正は以上で、次はInterfaceBuilderでGUIを作成します。

・GUIの作成

 Example02ViewController.xibを開いてInterfaceBuilderを起動します。初期状態ではViewには何も設定されていません。

初期状態のUIView 初期状態のUIView

 LibraryからViewの真ん中辺りにTextFieldをドラッグして張り付けましょう。

TextFieldを中心に配置 TextFieldを中心に配置

 TextFieldを選択した状態で、InspecterのConnectionsを開きます。まだ何も設定されていません。

TextFieldのインスペクタ画面 TextFieldのインスペクタ画面

 リストの中にNewReferencingOutletがあるので、右側の○をFile'sOwnerにドラッグ&ドロップします。先ほどソースコードに記入したhelloTextが出てくるので、それを選択します。

InterfaceBuilderでOutletの設定 InterfaceBuilderでOutletの設定

 これでXIBロード時に初期化されたTextFieldオブジェクトは、Example02ViewControllerクラスのhelloText変数に自動でセットされます。

 続いて同様にLibraryから真ん中辺りにButtonをドラッグして張り付けましょう。

Buttonを中心に配置 Buttonを中心に配置

 今度はButtonを選択した状態で、InspecterのAttributesを開きます。Titleという欄があるので「Hello」と入力します。

Buttonにテキストを追加 Buttonにテキストを追加

 続いて、InspecterのConnections を開きます。リストの中に、TouchUpInsideがあるので、先ほどと同様○からFile'sOwnerにドラッグ&ドロップします。同様にソースコードに記入したtapHelloが出てきますので、それを選択します。

InterfaceBuilderでActionの設定 InterfaceBuilderでActionの設定

 以上でHelloWorldの開発は終わりです。

WindowsやEclipse開発者はこのInterfaceBuilderになじめません。まずコードを用意しなければならないなんて、Windows開発やEclipseでの開発では非常識で、イベントハンドラ系の関数はあるべきところに自動でテンプレートが挿入されるというのがIDEの常識だからです。


Hello Worldの実行

 シミュレータで実行してみましょう。HelloボタンをタップでHelloWorldが表示されましたか?

ボタンを押した前と後 ボタンを押した前と後
ボタンを押した前と後

 

著者紹介

佐々木義一郎

コニット

初仕事から約8年、一貫してJava+Oracleなどのオープン系技術者として従事。大小さまざまな開発プロジェクトを経験し、現在はコニットにて念願の自社製品開発に奮起。手掛けたアプリ、サムライチェスメロディベルに続き、おならアプリ「メロディっ屁」も販売中。



前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。