iOS SDKによるiPhone/iPadアプリケーション開発入門

第3回 View Controller概要

この記事を読むのに必要な時間:およそ 2.5 分

前回は,main関数からビューコントローラを使ってビューを作るまでのコードを説明しました。今回からはサンプルアプリケーションの作成を通して,iOSアプリケーション開発の様々な技法を学んでいきましょう。

まずは作成するサンプルアプリケーションのデザインを考えます。

作成するアプリケーションの概要

プロフェッショナルになるためには1万時間の訓練が必要であるという説があります。プロレベルまでいかなくても,一芸に秀でるためにはある程度まとまった時間が必要になります。この連載ではそんな練習を継続するモチベーションを助けるツールを開発します。機能一覧としては以下のような内容を想定しています。

  • 継続したい目標を登録する
  • 目標の一覧画面
  • 目標の経過時間登録画面
  • 日時設定によるリマインダ機能
  • 達成度をFacebookでシェアする

画面をデザインする

それでは個々の画面を簡単にデザインしてみます。

目標登録画面

目標のタイトルと,目標達成時間を入力するテキストフィールドを2つ用意します。

目標一覧画面

目標一覧画面では,登録した目標と,その達成時間が一覧できるようにします。また編集ボタンを押すと項目の削除ができるようにします。

経過登録画面

経過登録画面では,いつどれだけの時間取り組んだかを入力できるようにします。また,状況をシェアするためのボタンと,次にいつ取り組むかを設定するリマインダ設定も行えるようにします。

これらの画面デザインを以下に示します。今回はオンラインドローツールのCacooを使用しました。

図1 画面デザイン

図1 画面デザイン

画面イメージはこちらでも確認できます。

コンテナView Controllerを利用する

それでは画面イメージをもとに実装を進めていきましょう。まずはコンテナView Controllerの使用を検討します。

コンテナView Controllerとは,ほかのView Controllerを管理するView Controllerオブジェクトです。コンテナView Controllerには,階層的なデータの表示を管理するNavigation Controller,1つ以上の別々の操作モードに分割整理するTab Bar Controller,iPad用のPopover ControllerとSplit View Controllerがあります。Popoverはそれ自体はView Controllerではありませんが,他のView Controllerを管理します。Split View ControllerはiPadを横向きにしたときによく見られる画面で,2つのペインからなる情報を管理するコンテナView Controllerです。

今回は一覧画面と詳細画面とを階層構造にしたいため,Navigation Controllerを使用します。

それではコードを見て行きましょう。

アプリケーションデリゲートクラスのコードを以下のように変更します。

GihyoSample01AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

  viewController = [[RootViewController alloc]init];
  navigationController = [[UINavigationController alloc]initWithRootViewController:viewController];  // -- (1)

  [window addSubview:navigationController.view];  // -- (2)
  [window makeKeyAndVisible];

  return YES;
}

(1)では,UINavigationControllerオブジェクトを作成しています。その後,initWithRootViewControllerメソッドによって前回作成したカスタムView ControllerであるRootViewControllerをナビゲーションの開始地点として指定しています。

(2)では,ウィンドウのサブビューとしてRootViewControllerのviewではなく,UINavigationControllerオブジェクトのviewを追加しています。

著者プロフィール

臼井洋文(うすいひろふみ)

WEBアプリケーションエンジニア。京都府京都市出身。仕事ではPerlでサーバサイドプログラムを書きつつ,Objective-CでiPhoneアプリケーションの開発を行っている。最近はエンジニアも体力勝負という考えのもと,ボルダリングで体力作りに励んでいる。

twitter:usuihiro
blog:http://d.hatena.ne.jp/usuihiro1978/

コメント

コメントの記入