2010年11月30日 過去Blog
今回は、Interface Builder を使って、UITextField, UILabel, そして ボタンを配置し、Xcode で書いたコードと接続し、動作させてみます。

アプリケーションの仕様

  1. ユーザーがテキストボックスをタップすると入力用のキーボードが表示される
  2. ユーザーは自分の名前(任意の文字列)を入力する
  3. 実行ボタンを押す
  4. ボタンを押すとラベルが、「Hello! ユーザー名!」のような表示に更新される
  5. もし、テキストボックスが空のまま実行されると、警告を表示させる
このチュートリアルでは、以下の記事を既に理解されている方を前提としています。

今回の流れ:

  • View Based Projectの新規作成
  • シンプルなユーザーインターフェースを作成
  • インターフェースに接続するためのコードを作成
  • インターフェースとコードを接続
  • ユーザー入力によってインターフェースの表示を更新

View Based Projectの新規作成

上記のように今回作成するアプリケーションは1つのビューしか必要ないので、View-Based Applicationのテンプレートを使って作成します。

Xcodeを起動し、「新規プロジェクト」を選択します。

以下のようなウインドウが表示されたら、左ペイン内のiOS > Application が選択されているのを確認、「View-based Application」を選んで、「選択」ボタンを押す。

3-1

その後に表示されるプロジェクト名は「ViewBased」として保存。

ViewBasedViewController.xib をクリックし、インターフェースビルダーを起動します。起動すると以下のように4つのウインドウが現れると思います。

3-3

Interface builder について少し…

Library – 一番左のライブラリには、ビューに追加することが出来るコントロールがすべて表示されています。このチュートリアルでは、 TextField, Label, そして Buttonを使います。

その右隣の下側にあるウインドウに含まれるview は、このnibファイルの見た目を表します。File’s Owner は、インターフェースとプログラムのコードを接続するためのものです。

View – これは、あなたのiPhoneアプリのインターフェースです。ここにライブラリから必要なコントロールをドラッグ&ドロップして配置します。

Attributes – これは、配置したコントロールの詳細設定を行うものです。

シンプルなユーザーインターフェースを作成

Text Field を追加 まず、ライブラリからText Field を選択し、view ウインドウに追加します。その際、ブルーの線が表示されることがありますが、これは配置の手助けになるガイドです。Text Field をお好みの場所に配置し、左右に伸ばしてください。 そして、配置したText Field に、Attributesにて、属性を追加します。 Text Field を選択し、Attributes ウインドウのタイトルが下図のように、Text Field Attributes となっていることを確認します。(違う名前になっている場合は、view ウインドウからText Field をクリックして選択します。) 4-4
  • Attributes ウインドウ内の Placeholder の箇所で、Text Field のデフォルトで表示される文字設定を行います。
  • Capitalize フィールドから Words を選択します。これは、すべての各単語を大文字にすることをXCodeに伝えます。
  • Return Key のフィールドからDone を選択します。これは、キーボードのreturn キーがリターンではなく、Done(完了)であることを設定します。
  • Clear When Edit Begins をチェックします。これは名前の通り、編集が始まると初期設定のテキストをクリアするということです。
4-5 Label を追加 ライブラリから Label をview にドラッグし追加します。Text Field と同様に適度に拡大しておきます。 Attributes 内の Text フィールドに「お名前を入力してください。」という案内文を設定します。 4-6 Button を追加 ライブラリから Round Rect Button をview にドラッグし追加します。お好みのサイズに変更しておきます。 Attributes 内の Title フィールドに「実行する」と入力し設定します。 4-7 以上でインターフェースの作成は完了です。 次は実行するプログラムのコードを記述していきます。保存したら Interface Builder は閉じてください。 インターフェースとコードを接続するファイルは、View Controller と呼ばれています。 ViewBasedViewController.h ファイルを以下の様に編集します。

#import <UIKit/UIKit.h>

@interface ViewBasedViewController : UIViewController {

IBOutlet UITextField *txtName;

IBOutlet UILabel *lblHello;

}

@property(nonatomic,retain) IBOutlet UITextField *txtName;

@property(nonatomic,retain) IBOutlet UILabel *lblHello;

-(IBAction) updateText:(id) sender;

@end

Interface Builder は、IBOutlets と IBAction を使って、コードと接続します。以下は各コードの説明です。

  • IBOutlet UITextField *textName – interface builder 上のText Field に接続するためのアウトレットを作成します。Text Field からの情報を取得するために、この変数を使います。
  • IBOutlet UILabel *lblHello – interface builder 上のlabelに接続するためのアウトレットを作成します。labelの値を設定するために、この変数を使います。
これらの変数を宣言したので、プロパティを設定する必要があります。 そうすることで、変数に属性を設定することが可能になります。 Retain とは、このオブジェクトのメモリを保持することをコンパイラに伝えます。(完了した時には、リリースする必要があることを忘れてはいかません。)さもなくば、インスタンス化された時点で解放されます。(?)

– (IBAction) updateText:(id) sender;

これは、インターフェースビルダーで作ったボタンがクリックされた時に呼び出されるアクションです。このヘッダーファイルで宣言しました。このアクション(コード)とインターフェースを接続するためにViewBasedViewController.xibファイルをダブルクリックしてInterface Builderを起動します。

View を接続する

viewの中の任意の場所をクリックします。AttributesウインドウのConnection(左から2番目のタブ、もしくはTools > Connections Inspector を選択)を表示させます。

Referencing Outlets の中から New Referencing Outlet という項目の右側にある○をクリック&ドラッグし、File’s Owner のファイルの上で放します。すると、view というポップアップが出ると思うのでそれを選択して、view と File’s Owner を接続します。

4-8

Text Field , Labelを接続する

viewウインドウの中のText Field をクリックして選択します。AttributesウインドウのConnection(左から2番目のタブ、もしくはTools > Connections Inspector を選択)を表示させます。

Referencing Outlets の中から New Referencing Outlet という項目の右側にある○をクリック&ドラッグし、File’s Owner のファイルの上で放します。すると、txtName というポップアップが出ると思うのでそれを選択して、Text Field と File’s Owner を接続します。

同様に、label(lblHello)も接続します。

Buttonを接続する

viewウインドウの中の Button をクリックして選択します。AttributesウインドウのConnection(左から2番目のタブ、もしくはTools > Connections Inspector を選択)を表示させます。

Events の中から Touch Up Inside という項目の右側にある○をクリック&ドラッグし、File’s Owner のファイルの上で放します。すると、updateText というポップアップが出ると思うのでそれを選択して、Button と File’s Owner を接続します。

接続されると以下の図のように表示されます。

4-9これですべてのコントロールが接続されました。 以上で、インターフェースビルダーとXCodeを接続する設定は完了です。

次に、XCode上からViewBasedViewController.m を開きます。これはupdateTextというアクションを実装するファイルですので、以下のようにファイルを編集します。

#import “ViewBasedViewController.h”

@implementation ViewBasedViewController

@synthesize txtName,lblHello;

-(IBAction) updateText:(id)sender{

NSString *text;

if ([txtName.text length] == 0) {

text = @”Error:名前を入力してください。;

}

else {

text = [[NSString alloc] initWithFormat:@”こんにちは、%@さん!!,txtName.text];

}

lblHello.text = text;

;

}

ここで記述したコードについて簡単に説明します。

@synthesize txtName,lblHello;

基本的に変数を作成すれば、“getter” や “setter” と呼ばれるメソッドを定義する必要があります。これらの関数は、変数の値を取得し、変数の値を設定します。

synthesize を設定することで、簡単にこれらのメソッドを実装することが出来ます。とても便利ですね。

次は、 updateText メソッドを実装します。まず、NSString型の変数textを宣言します。これはラベルに挿入する文字列を扱います。

次の if 行で Text Field 内に文字が入力されているかどうかを検証しています。

[txtName.text length] == 0

つまり、何も入力されていない状態でボタンがクリックされると「Error:名前を入力してください。」と表示されます。

ユーザーが何らかの文字を入力していれば、その文字が「txtName.text」に設定されます。 initWithFormat メソッドはC言語の printfin に似ています。

@”こんにちは、%@さん!!,txtName.text

“%@” の箇所に、後ろで指定している txtName.text が挿入されます。

最後に、lblHello.text = text; で、入力されたテキストが lblHello.text ラベルに挿入されます。

最後の行の ; の宣言で、一時的にテキストフィールドに保存されているメモリを解放します。これはクラッシュの少ない、有能なアプリケーションを作るためには必ず書く必要があります。iPhone ではデスクトップPCなどに比べ、使えるメモリが限られているからです。

以上で、今回のアプリは完成です。シミュレータから実行してみてください。

以下の画面のように表示されればOKです。

4-10

この投稿へのコメント

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

外部SQLiteデータベースを更新した場合

2010年12月09日 過去Blog
アプリケーションの外部でデータベースを変更した場合、プログラム内のデータベースを入れ替えても反映されないので、そういう場合は、既にシミュレータまたは、デバイスにインストールされている該当アプリを一度アンインストールしてから、再度ビルド&実行することで、データベースも最新のものが反映される模様。 http://oknamulti.by/…
「外部SQLiteデータベースを更新した場合」をはてなブックマークに追加

PHP POSTチェック

2011年05月15日 過去Blog
http://www.sakura-pc.jp/php/02020000.shtml
「PHP POSTチェック」をはてなブックマークに追加

tabBar内にABPeoplePickerNavigationControllerを表示させる

2011年01月17日 過去Blog
もともと入っている電話アプリなんかは、タブバーを選択すると連絡先が表示されるようになっていますが、それを実装するために、いろいろ試行錯誤してみましたが、以下のようにすることで、実装出来ました。 この件に関しては、あまり、情報がなかった(モーダルビューにpickerを表示させる例は多々ありましたが・・・)ので、スマートな方法かどうかは不明ですので、もし、もっとスマートな方法をご存知の方がいらっしゃいましたら、是非コメントください。…
「tabBar内にABPeoplePickerNavigationControllerを表示させる」をはてなブックマークに追加

サーバの時刻調整

2010年03月05日 過去Blog
サーバの時刻設定 1. 時刻確認 date 2. 時刻設定 date -s "2006/02/20 19:03" linux上で、上記のコマンドを実行すれば、調整出来ます。 参照元:http://memorva.jp/memo/linux/date_ntp.php buy anabolics online…
「サーバの時刻調整」をはてなブックマークに追加

UITextField を自動で入力待ち状態にする(フォーカスをあてる)方法

2010年12月26日 過去Blog
UITextField が設置されているviewが表示されたら、自動で入力待ち状態にする方法です。 - (void)viewDidLoad { [super viewDidLoad]; [textField becomeFirstResponder]; } new york limo…
「UITextField を自動で入力待ち状態にする(フォーカスをあてる)方法」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy