Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

iPhoneプログラミングの基礎:View Controller

ビューの切り替え、切り替え時のアニメーション設定、ビュー間のデータ受け渡し方法

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/11/02 14:00

 iPhoneプロジェクトのプログラミングを始めるとき、最初に学ぶものの1つが"View Controller"です。本稿では、View Controllerを使って、ビューの切り替え、ビュー切り替え時のアニメーションの設定、ビュー間のデータの受け渡しを行う方法について説明します。

目次

はじめに

 iPhoneプロジェクトのプログラミングを始めるとき、最初に学ぶものの1つがView Controllerです。単純なアプリケーションを動かすのに必要な作業の量に、初心者はひるんでしまうかもしれません。けれども、iPhoneのUI処理のかなりの部分はView Controllerのプログラミングで行うので、View Controllerの仕組みを理解することはiPhoneプログラミングに不可欠です。

 この記事では、iPhoneプログラミングにおけるView Controllerの概念と使い方を説明します。この記事を読めば、View Controllerを的確に理解でき、素晴らしいアプリケーションを作成するのに役立つでしょう。

プロジェクトの作成

 いつものとおり、ここでも実際のプロジェクトを作成して、何がどうなるのか見てみるのが1番です。まず、Xcodeを起動し、「VCExample」という名前のView-based Applicationプロジェクトを新規作成します(図1を参照)。

図1 新しいプロジェクトの作成:Xcodeの[新規プロジェクト]画面で[View-based Application]を選択する
図1 新しいプロジェクトの作成:Xcodeの[新規プロジェクト]画面で[View-based Application]を選択する

基本の理解

 この新しいプロジェクトには、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 デフォルトのファイル:新しいView-based Applicationにデフォルトで作成されるファイル
図2 デフォルトのファイル:新しいView-based Applicationにデフォルトで作成されるファイル

 最初の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を参照。リストモードの画面です)。

図3 MainWindow.xib:リストモードで表示した「MainWindow.xib」ファイルの内容
図3 MainWindow.xib:リストモードで表示した「MainWindow.xib」ファイルの内容

 ここには、VCExampleViewController型のView Controller、つまりVCExampleViewControllerクラスのインスタンスが含まれています。このView Controllerインスタンスを選択し、Identity Inspectorウィンドウを表示すると、これを確認できます(図4を参照)。

図4 Identityの確認:VCExampleViewControllerインスタンスのIdentity Inspector表示
図4 Identityの確認:VCExampleViewControllerインスタンスのIdentity Inspector表示

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Wei-Meng Lee(Wei-Meng Lee)

    Microsoft MVP受賞者。Microsoft社の最新テクノロジー実地研修を専門とするDeveloper Learning Solutions社を創設。.NETとワイヤレステクノロジーの開発者、指導者として知られる。国際的なカンファレンスでたびたび講演し、.NET、XML、ワイヤレステクノロジ...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5