FrontPage

2010/09/18からのアクセス回数 7463

iPadを買ってから、これなら自分の欲しいソフトを作ってもいいなぁと感じ、iPhone/iPadのプログラム 開発の勉強をすることにしました。

参考書

私は昔のプログラマーなので、まずは本を読んでどのように開発するかを勉強するところから はじめます。

今回参考にしたのは、以下の2冊です。

iPhone Simulatorを使って本の例題を動かしてみる

次に私が大切にしていることは、本の例題を自分で入力して動かしてみることです。

実際に自分が使ってみることで、

など、本には書いてないことが見えてきます。

開発環境の設定

iPhone/iPadの開発をするには、以下のものが必要になります。

私が、iPhone開発に二の足を踏んでいたのもSnow Leopardにアップグレードしないと最新のiPhone SDKを インストールできないからでした。*1

最初の一歩

iPhone SDKでは、主にXcodeとInterface Builder(以下IBと省略)を使ってアプリケーションを作成します。

ここでは、入力したテキストをもう一方のラベルコピーするCopyTextという例題を作成しながら、 開発手順を説明します。

プロジェクトの作成

XCodeを起動し、「ファイル」→「新規プロジェクト」を選択すると、「テンプレート選択」ダイアログが表示するので、ここではiPHone OSの下のApplicationを選択し、テンプレートとしてView-based Applicationを選択し、名称をCopyTextとします。これで以下のようなプロジェクト画面が表示されます。*2

proj_panel.png

たったこれだけで、実際の動作するアプリケーションのひな形ができあがります。 試しに、「ビルドと実行」のボタンを押してiPhone Simulatorを実行してみると、

iPhone_simulator.png

が表示されるはずです。

アプリケーション起動の仕組み

どうしてこんなに簡単にプログラムが作成され、実行するのかその仕組みをみてみましょう。

iPhoneアプリケーションの特徴は、「delegate」プロトコルとIBを使ったGUIの定義に あります。

プロジェクト画面でMainWindow.xibをダブルクリックするとIBが起動し、MainWIndow.xib画面に なにやら見慣れないアイコンが並んでいます。

MainWindows_XBI.png

各アイコンに定義された情報をもとにiPhoneは画面を 作成するのですが、その過程は以下のようになっています。*3

  1. File's OwnerのUIApplicationに定義されているdelegate(プログラムではCopyTextAppDelegate)にDidFinshLauching:メソッドを送る
  2. delegateは、viewContoller(プログラムではCopy Text ViewController)のviewをwindowのサブビューとし、windowにmakeKeyAndVisibleメソッドを送ります

delegate.png

このようにIBを使ったプログラミングでは、viewControllerが制御のメインとなります。

Copy Textの実装

IBの生成するXIBファイルとプログラム内のオブジェクトの橋渡しになっているが、IBOutletとIBActionです。

これから、Copy Text ViewControllerを編集しながら、IBOutletとIBActionの使い方を説明します。

CopyTextViewController.hの変更

CopyTextViewControllerの属性として、

を定義し、@properyにIBOutletキーワードを付けて定義します。

copyボタンが押されたときのアクションとして、copyを定義します。

入力時の補完について

@interface CopyTextViewController : UIViewController {
	UILabel		*toLabel;
	UITextField	*fromText;
	UIButton	*copyButton;
}

@property(nonatomic, retain) IBOutlet UILabel		*toLabel;	
@property(nonatomic, retain) IBOutlet UITextField	*fromText;
@property(nonatomic, retain) IBOutlet UIButton		*copyButton;

- (IBAction)copy;
@end

@propertyで、属性へのアクセッサ(getter/setter)が自動生成されることを示します。

CopyTextViewController.mの変更

この段階では、@property宣言した属性を@synthesizeで属性へのアクセッサが生成されます。

copyアクションはコンソールへの出力を定義します。NSLogは、Cのprintfのようなものです。

@implementation CopyTextViewController

@synthesize	toLabel;
@synthesize	fromText;
@synthesize	copyButton;

- (IBAction)copy {
	NSLog(@"copy method invoked");
}

CopyTextViewController.xibの変更

プロジェクト画面でCopyTextViewController.xibをダブルクリックするとIBが起動します。 コマンド-シフト-Lでライブラリウィンドウが表示しますので、検索フィールドにfieと入力すると 一覧からTextFieldが選択されます。このTextFieldwをライブラリからviewにドラッグしたのが 以下の図です。

IB.png

同様に

を配置します。

次にFile's Ownerを選択し、コマンド-2でconnectionタブに切り替え、先ほど定義したIBOutletのcopyButtonとcopyボタンを線で結びます。

connection.png

同様にRecived Actionsのcopyとボタンを結び、Touch Up Insideイベントでアクションを送るように定義します。

すべて定義したときのConnectinsは以下のようになります。

FilesOwner.png

コメント

この記事は、

選択肢 投票
おもしろかった 0  
そうでもない 0  
わかりずらい 0  

皆様のご意見、ご希望をお待ちしております。


(Input image string)

*1 仕事が一段落したので、Air Book をLeopardに残し、メインをSnow Leopardにアップグレードしました。仕事でマックを使っている人は、簡単にはOSを替えられないのです!
*2 どのようなファイルが作成されるか分かるようにエディタ画面を小さくしてあります
*3 iPhone SDK Development p52から引用

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
SmartDoc