iPhone/最初の一歩
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
2010/09/18からのアクセス回数 &counter;
#contents
iPadを買ってから、これなら自分の欲しいソフトを作ってもい...
開発の勉強をすることにしました。
** 参考書 [#t4ae32e5]
私は昔のプログラマーなので、まずは本を読んでどのように開...
はじめます。
今回参考にしたのは、以下の2冊です。
- iPhone and iPad in Action (Manning出版)
- iPhone SDK Development (Pragmatic出版)
*** iPhone Simulatorを使って本の例題を動かしてみる [#h2b1...
次に私が大切にしていることは、本の例題を自分で入力して動...
実際に自分が使ってみることで、
- エラーの対処
- 困ったときの情報の取得方法
など、本には書いてないことが見えてきます。
** 開発環境の設定 [#w03686e9]
iPhone/iPadの開発をするには、以下のものが必要になります。
- 最新のMac OS/X (Snow Leopard)
- iPhone SDK(「Apple Developer」への登録が必要)
私が、iPhone開発に二の足を踏んでいたのもSnow Leopardにア...
インストールできないからでした。((仕事が一段落したので、A...
** 最初の一歩 [#nadb3d41]
iPhone SDKでは、主にXcodeとInterface Builder(以下IBと省略...
ここでは、入力したテキストをもう一方のラベルコピーするCop...
開発手順を説明します。
*** プロジェクトの作成 [#td996dbc]
XCodeを起動し、「ファイル」→「新規プロジェクト」を選択す...
&ref(proj_panel.png);
たったこれだけで、実際の動作するアプリケーションのひな形...
試しに、「ビルドと実行」のボタンを押してiPhone Simulator...
&ref(iPhone_simulator.png);
が表示されるはずです。
*** アプリケーション起動の仕組み [#b3c290cc]
どうしてこんなに簡単にプログラムが作成され、実行するのか...
iPhoneアプリケーションの特徴は、「delegate」プロトコルとI...
あります。
プロジェクト画面でMainWindow.xibをダブルクリックするとIB...
なにやら見慣れないアイコンが並んでいます。
&ref(MainWindows_XBI.png);
各アイコンに定義された情報をもとにiPhoneは画面を
作成するのですが、その過程は以下のようになっています。((i...
+ File's OwnerのUIApplicationに定義されているdelegate(プ...
+ delegateは、viewContoller(プログラムではCopy Text View...
&ref(delegate.png);
このようにIBを使ったプログラミングでは、viewControllerが...
** Copy Textの実装 [#c21146a5]
IBの生成するXIBファイルとプログラム内のオブジェクトの橋渡...
- IBOutletは、オブジェクトの属性がIBによって定義されるこ...
- IBActionは、IBの定義によってメソッドが呼び出されること...
これから、Copy Text ViewControllerを編集しながら、IBOutle...
*** CopyTextViewController.hの変更 [#dd03354c]
CopyTextViewControllerの属性として、
- fromText : コピー元のテキストフィールド
- toLabel : コピー先のラベル
- copyButton : コピーを指示するボタン
を定義し、@properyにIBOutletキーワードを付けて定義します。
copyボタンが押されたときのアクションとして、copyを定義し...
入力時の補完について
- 自動補完 : 例えばUILabelを入力する場合、UILまでを入力す...
&ref(AutoCompl.png);
- 候補選択 : 例えばUITextFieldを入力する場合、UITまで入力...
&ref(selectBox.png);
#pre{{
@interface CopyTextViewController : UIViewController {
UILabel *toLabel;
UITextField *fromText;
UIButton *copyButton;
}
@property(nonatomic, retain) IBOutlet UILabel *toLabel;
@property(nonatomic, retain) IBOutlet UITextField *fromTe...
@property(nonatomic, retain) IBOutlet UIButton *copyButt...
- (IBAction)copy;
@end
}}
@propertyで、属性へのアクセッサ(getter/setter)が自動生...
*** CopyTextViewController.mの変更 [#m5b416fc]
この段階では、@property宣言した属性を@synthesizeで属性へ...
copyアクションはコンソールへの出力を定義します。NSLogは、...
#pre{{
@implementation CopyTextViewController
@synthesize toLabel;
@synthesize fromText;
@synthesize copyButton;
- (IBAction)copy {
NSLog(@"copy method invoked");
}
}}
*** CopyTextViewController.xibの変更 [#l4e27638]
プロジェクト画面でCopyTextViewController.xibをダブルクリ...
コマンド-シフト-Lでライブラリウィンドウが表示しますので、...
一覧からTextFieldが選択されます。このTextFieldwをライブラ...
以下の図です。
&ref(IB.png);
同様に
- Label
- Button
を配置します。
次にFile's Ownerを選択し、コマンド-2でconnectionタブに切...
&ref(connection.png);
同様にRecived Actionsのcopyとボタンを結び、Touch Up Insid...
すべて定義したときのConnectinsは以下のようになります。
&ref(FilesOwner.png);
すべてを保存し、実行メニューから「ビルドと実行」を選択す...
&ref(keyboard.png);
copyボタンを押すとXCodeのコンソール画面には、
#pre{{
2010-09-18 18:56:06.300 CopyText[35867:207] copy method i...
}}
と出ます。
** CopyTextの実装 [#yf5b315c]
最後の画面は、一見上手くいっているように見えますが、TextF...
そこで、困ったときのマニュアルです。CopyTextViewControlle...
&ref(description.png);
この右上の本のアイコンを押すとUITextFieldのマニュアルが表...
Overviewを読んでいくと
&ref(man.png);
とあり、UITextFieldDelegateプロトコルが入力の振る舞いをカ...
UITextFieldDelegateのメソッドを見ていくとリターンボタンが...
マニュアルには、textFieldShouldReturnの例題が無かったので...
#pre{{
// テキストフィールドにフォーカスがあたっていて,入力が完...
// UITextFieldDelegateプロトコルtextFieldShouldReturnメソ...
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField...
[textField1 resignFirstResponder];
return YES;
}
}}
上記のtextFieldShouldReturnを追加した後、copyを以下のよう...
#pre{{
- (IBAction)copy {
NSLog(@"copy method invoked");
toLabel.text = fromText.text;
}
}}
これで完成!と思いきや、copyボタンを押すとテキストがLabel...
そうです、textFieldのdelegateプロトコルを使っているの、te...
&ref(textField_delegate.png);
最終版の起動後、testと入力し、copyボタンを押した時のスナ...
#ref(finish.png);
** プロジェクトのソース [#re8d095d]
今回作成したプロジェクトのソースを以下にまとめました。
- &ref(CopyText.zip);
** コメント [#m1f474a6]
この記事は、
#vote(おもしろかった[5],そうでもない[1],わかりずらい[4])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
終了行:
[[FrontPage]]
2010/09/18からのアクセス回数 &counter;
#contents
iPadを買ってから、これなら自分の欲しいソフトを作ってもい...
開発の勉強をすることにしました。
** 参考書 [#t4ae32e5]
私は昔のプログラマーなので、まずは本を読んでどのように開...
はじめます。
今回参考にしたのは、以下の2冊です。
- iPhone and iPad in Action (Manning出版)
- iPhone SDK Development (Pragmatic出版)
*** iPhone Simulatorを使って本の例題を動かしてみる [#h2b1...
次に私が大切にしていることは、本の例題を自分で入力して動...
実際に自分が使ってみることで、
- エラーの対処
- 困ったときの情報の取得方法
など、本には書いてないことが見えてきます。
** 開発環境の設定 [#w03686e9]
iPhone/iPadの開発をするには、以下のものが必要になります。
- 最新のMac OS/X (Snow Leopard)
- iPhone SDK(「Apple Developer」への登録が必要)
私が、iPhone開発に二の足を踏んでいたのもSnow Leopardにア...
インストールできないからでした。((仕事が一段落したので、A...
** 最初の一歩 [#nadb3d41]
iPhone SDKでは、主にXcodeとInterface Builder(以下IBと省略...
ここでは、入力したテキストをもう一方のラベルコピーするCop...
開発手順を説明します。
*** プロジェクトの作成 [#td996dbc]
XCodeを起動し、「ファイル」→「新規プロジェクト」を選択す...
&ref(proj_panel.png);
たったこれだけで、実際の動作するアプリケーションのひな形...
試しに、「ビルドと実行」のボタンを押してiPhone Simulator...
&ref(iPhone_simulator.png);
が表示されるはずです。
*** アプリケーション起動の仕組み [#b3c290cc]
どうしてこんなに簡単にプログラムが作成され、実行するのか...
iPhoneアプリケーションの特徴は、「delegate」プロトコルとI...
あります。
プロジェクト画面でMainWindow.xibをダブルクリックするとIB...
なにやら見慣れないアイコンが並んでいます。
&ref(MainWindows_XBI.png);
各アイコンに定義された情報をもとにiPhoneは画面を
作成するのですが、その過程は以下のようになっています。((i...
+ File's OwnerのUIApplicationに定義されているdelegate(プ...
+ delegateは、viewContoller(プログラムではCopy Text View...
&ref(delegate.png);
このようにIBを使ったプログラミングでは、viewControllerが...
** Copy Textの実装 [#c21146a5]
IBの生成するXIBファイルとプログラム内のオブジェクトの橋渡...
- IBOutletは、オブジェクトの属性がIBによって定義されるこ...
- IBActionは、IBの定義によってメソッドが呼び出されること...
これから、Copy Text ViewControllerを編集しながら、IBOutle...
*** CopyTextViewController.hの変更 [#dd03354c]
CopyTextViewControllerの属性として、
- fromText : コピー元のテキストフィールド
- toLabel : コピー先のラベル
- copyButton : コピーを指示するボタン
を定義し、@properyにIBOutletキーワードを付けて定義します。
copyボタンが押されたときのアクションとして、copyを定義し...
入力時の補完について
- 自動補完 : 例えばUILabelを入力する場合、UILまでを入力す...
&ref(AutoCompl.png);
- 候補選択 : 例えばUITextFieldを入力する場合、UITまで入力...
&ref(selectBox.png);
#pre{{
@interface CopyTextViewController : UIViewController {
UILabel *toLabel;
UITextField *fromText;
UIButton *copyButton;
}
@property(nonatomic, retain) IBOutlet UILabel *toLabel;
@property(nonatomic, retain) IBOutlet UITextField *fromTe...
@property(nonatomic, retain) IBOutlet UIButton *copyButt...
- (IBAction)copy;
@end
}}
@propertyで、属性へのアクセッサ(getter/setter)が自動生...
*** CopyTextViewController.mの変更 [#m5b416fc]
この段階では、@property宣言した属性を@synthesizeで属性へ...
copyアクションはコンソールへの出力を定義します。NSLogは、...
#pre{{
@implementation CopyTextViewController
@synthesize toLabel;
@synthesize fromText;
@synthesize copyButton;
- (IBAction)copy {
NSLog(@"copy method invoked");
}
}}
*** CopyTextViewController.xibの変更 [#l4e27638]
プロジェクト画面でCopyTextViewController.xibをダブルクリ...
コマンド-シフト-Lでライブラリウィンドウが表示しますので、...
一覧からTextFieldが選択されます。このTextFieldwをライブラ...
以下の図です。
&ref(IB.png);
同様に
- Label
- Button
を配置します。
次にFile's Ownerを選択し、コマンド-2でconnectionタブに切...
&ref(connection.png);
同様にRecived Actionsのcopyとボタンを結び、Touch Up Insid...
すべて定義したときのConnectinsは以下のようになります。
&ref(FilesOwner.png);
すべてを保存し、実行メニューから「ビルドと実行」を選択す...
&ref(keyboard.png);
copyボタンを押すとXCodeのコンソール画面には、
#pre{{
2010-09-18 18:56:06.300 CopyText[35867:207] copy method i...
}}
と出ます。
** CopyTextの実装 [#yf5b315c]
最後の画面は、一見上手くいっているように見えますが、TextF...
そこで、困ったときのマニュアルです。CopyTextViewControlle...
&ref(description.png);
この右上の本のアイコンを押すとUITextFieldのマニュアルが表...
Overviewを読んでいくと
&ref(man.png);
とあり、UITextFieldDelegateプロトコルが入力の振る舞いをカ...
UITextFieldDelegateのメソッドを見ていくとリターンボタンが...
マニュアルには、textFieldShouldReturnの例題が無かったので...
#pre{{
// テキストフィールドにフォーカスがあたっていて,入力が完...
// UITextFieldDelegateプロトコルtextFieldShouldReturnメソ...
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField...
[textField1 resignFirstResponder];
return YES;
}
}}
上記のtextFieldShouldReturnを追加した後、copyを以下のよう...
#pre{{
- (IBAction)copy {
NSLog(@"copy method invoked");
toLabel.text = fromText.text;
}
}}
これで完成!と思いきや、copyボタンを押すとテキストがLabel...
そうです、textFieldのdelegateプロトコルを使っているの、te...
&ref(textField_delegate.png);
最終版の起動後、testと入力し、copyボタンを押した時のスナ...
#ref(finish.png);
** プロジェクトのソース [#re8d095d]
今回作成したプロジェクトのソースを以下にまとめました。
- &ref(CopyText.zip);
** コメント [#m1f474a6]
この記事は、
#vote(おもしろかった[5],そうでもない[1],わかりずらい[4])
皆様のご意見、ご希望をお待ちしております。
#comment_kcaptcha
ページ名:
SmartDoc