はじめに
iPhoneプロジェクトのプログラミングを始めるとき、最初に学ぶものの1つがView Controllerです。単純なアプリケーションを動かすのに必要な作業の量に、初心者はひるんでしまうかもしれません。けれども、iPhoneのUI処理のかなりの部分はView Controllerのプログラミングで行うので、View Controllerの仕組みを理解することはiPhoneプログラミングに不可欠です。
この記事では、iPhoneプログラミングにおけるView Controllerの概念と使い方を説明します。この記事を読めば、View Controllerを的確に理解でき、素晴らしいアプリケーションを作成するのに役立つでしょう。
プロジェクトの作成
いつものとおり、ここでも実際のプロジェクトを作成して、何がどうなるのか見てみるのが1番です。まず、Xcodeを起動し、「VCExample」という名前のView-based Applicationプロジェクトを新規作成します(図1を参照)。
基本の理解
この新しいプロジェクトには、Xcodeで自動的に作成される複数のプロジェクトテンプレートが含まれています。これらのテンプレートには、通常の動作に必要な基本的コードが入っているので、このコードについて見ていきましょう。
iPhoneアプリケーションを作成したことがない場合は、筆者の前の記事「iPhone徹底解剖:最初の一歩(原文)」と、次の補足記事「Objective-Cのファイルの種類」を参照してから、この記事に進むことをおすすめします。
【補足記事】Objective-Cのファイルの種類
Objective-Cでは、どのクラスも拡張子.hと.mの2つのファイルで定義します。.hファイルには、クラス自体のほかに、メンバ変数、メソッド、プロパティの宣言を記述します。.mファイルには、クラスの実装コードを記述します。
XIB(.xib)ファイルは、アプリケーションのUIを表すファイルです。XIBファイルの編集には、Interface Builderを使うのが最も簡単で、iPhoneアプリケーションのUIを視覚的に作成できます。
ではまず、この新しいプロジェクトに4つのソースコードファイルが含まれていることを確認してください(図2を参照)。
最初の2つ、VCExampleAppDelegate.hとVCExampleAppDelegate.mは、アプリケーションのロードとアンロードを処理します。次の2つ、VCExampleViewController.hとVCExampleViewController.mは、ビューのロードとアンロードを処理するView Controllerクラスを定義します(ビューはiPhoneの画面のようなものです。.NETプログラミングのWindows Formに相当します)。また、2つのNIBファイル、VCExampleViewController.xibとMainWindow.xibも含まれています。MainWindow.xibには、アプリケーションのロード先となるメインウィンドウが含まれます。そこには、基本的に「VCExampleViewController.xib」ファイルに含まれるビューがロードされます。
「VCExampleAppDelegate.h」ファイルの内容は次のようになっています。
#import <UIKit/UIKit.h> @class VCExampleViewController; @interface VCExampleAppDelegate : NSObject <UIApplicationDelegate> { UIWindow *window; VCExampleViewController *viewController; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet VCExampleViewController *viewController; @end
このファイルでは、「VCExampleViewController」という名前のView Controllerオブジェクトを定義しています。アプリケーションの初期化が完了すると、applicationDidFinishLaunching:
イベントが発生します。このイベントは「VCExampleAppDelegate.m」ファイルで処理され、このView Controllerのビューがロードされます。
#import "VCExampleAppDelegate.h" #import "VCExampleViewController.h" @implementation VCExampleAppDelegate @synthesize window; @synthesize viewController; - (void)applicationDidFinishLaunching:(UIApplication *)application { // Override point for customization after app launch [window addSubview:viewController.view]; [window makeKeyAndVisible]; } - (void)dealloc { [viewController release]; [window release]; [super dealloc]; } @end
「MainWindow.xib」をダブルクリックすると、Interface Builderでこれを編集できるようになります。MainWindow.xibウィンドウを見てください(図3を参照。リストモードの画面です)。
ここには、VCExampleViewController型のView Controller、つまりVCExampleViewControllerクラスのインスタンスが含まれています。このView Controllerインスタンスを選択し、Identity Inspectorウィンドウを表示すると、これを確認できます(図4を参照)。