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


ピックアップ記事

php MySQL 2つのテーブルを縦に並べて結合(union)し、結果を抽出する

2010年03月30日 過去Blog
select c1,c2,c3 from A union all select c1,c2,c3 from B 参照元:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1115439551 divorce lawyer san diego…
「php MySQL 2つのテーブルを縦に並べて結合(union)し、結果を抽出する」をはてなブックマークに追加

preg_match

2010年03月24日 過去Blog
自分用メモ $html = ブログから抜き出したソース; preg_match("/抜き出すパターン/", $html); 最初は正規表現が間違っているのかと思い、いくつか正規表現のパターンを変えてテストしてみましたが、手ごたえなし(´;ω;`)ウッ… 正規表現以外の問題だと思い、さらに基本的なことを調べてみると・・・ 「検索対象の文字列が1行か、複数行か。」 ここが問題だったようです…
「preg_match」をはてなブックマークに追加

iPhoneの留守電設定(解除方法)

2011年01月06日 過去Blog
iPhoneの場合は、普通の携帯のように機種上の操作で留守電の設定が出来ないので、少し調べてみました。 1406 にダイヤル あとはガイダンスに従って行うだけです。 サービス番号を押して最後に#を押してください。 転送電話  呼出しありは441 転送電話  呼出しなしは442 留守番電話  呼出しありは431 留守番電話  呼出しなしは432 留守番電話、または転送電話の解除は400 今…
「iPhoneの留守電設定(解除方法)」をはてなブックマークに追加

Drupal 7 のインストール

2011年04月22日 過去Blog
以下のインストール方法を参考にDrupal 7 のインストールに挑戦してみます。 Drupal 7 のインストール方法(英語) Step 1: ダウンロード 以下のサイトからダウンロードします。今回はzipファイルを選択。 latest version of Drupal 7. ダウンロードしたパッケージを解答し、FTPでサーバ上にまるごとアップします。 Step 2: データベース作成…
「Drupal 7 のインストール」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy