libro
www.tuyano.com
初心者のためのiphone/ipadプログラミング入門

Interface Builderを使ってアプリを作成する! (3/5)

作成:2011-03-17 08:06
更新:2011-03-17 08:13

■プロパティ・メソッドとGUIコンポーネントの接続

では、実際にプログラムを配置していきましょう。まずは、基本的な部品として「テキストを表示する」「テキストを入力する」「タッチして処理を実行する」という3つの部品を組み合わせたGUIを作成してみましょう。

まずは、これらをソースコード内から利用できるようにするため、2つのプロパティとメソッドを1つ用意しておきましょう。MyIAppViewController.hを開き(または、◯◯ViewController.hというファイルです)、下のリスト欄に掲載したように追記してください。

ここでは、「UILabel」「UITextField」というクラスのインスタンス変数を用意し、それぞれを利用するプロパティが用意されています。これらは、それぞれ「テキストを表示するラベル」「テキストを入力するテキストフィールド」のGUI部品のクラスになります。これらに、Interface Builderで作成したGUI部品を接続し、MyIAppViewControllerクラス内から利用可能にします。(この他、プロパティは用意していませんが「UIButton」というボタンのGUIも使われています)

インスタンス変数は、見ればわかるとおりですが、プロパティの宣言はちょっとわかりにくいでしょう。GUI部品と接続して利用するためのプロパティは、以下のような形で記述します。
@property (nonatomic, retain) IBOutlet クラス * 名前;
nonatomic」というのは、「非アトミック」に指定するものです。アトミックというのは、スレッドセーフで必ず値へのアクセスが保証されることを示します。非アトミックは、その保証がない、ということです。GUIと接続するプロパティは、nonatomicを指定しておくのが一般的です。

また、その後にある「IBOutlet」というのは、Interface Builderから接続されていることを示すマクロで、コンパイル時には削除されます。Interface BuilderのGUIと接続するプロパティでは、必ずこれを記述しておきます。でないと、Interface Builder側からプロパティが見えません。

また、メソッドについてですが、GUIでのイベントに接続して呼び出されるメソッドは、以下のような形で定義されます。
- (IBAction)キーワード:(id)変数;
メソッドは、id型の引数が1つ必要で、このメソッドを呼び出すイベントが発生したGUIコンポーネントのインスタンスが渡されます。また返値として、IBActionというオブジェクトが指定されます。これは、実は非常に重要です。ここでIBActionを返すようにしないと、Interface Builder側でイベントに結びつけるメソッドとして認識されないのです。

このIBActionも、先のIBOutletと同様にマクロです。これはコンパイル時に、voidに置き換えられます。つまり、メソッドそのものはvoidで返値のないメソッドなのですね。ですから、「IBActionって、一体、どんな値をreturnすればいいんだ?」と頭を悩ませる必要はありません。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※MyIAppViewController.h

#import <UIKit/UIKit.h>

@interface MyIAppViewController : UIViewController {
	UILabel * label1;
	UITextField * field1;
}

@property (nonatomic, retain) IBOutlet UILabel * label1;
@property (nonatomic, retain) IBOutlet UITextField * field1;

- (IBAction)btn1Action:(id)sender;

@end
※関連コンテンツ

「初心者のためのiphone/ipadプログラミング入門」に戻る