モデルの準備ができたところで、いよいよXcodeでiPhone Applicationの作成。

Fig.1

 Xcodeのファイル>新規プロジェクト...メニューでiPhone OSのApplicationを指定する。

Fig.2

 ここらへんの方法は、今まで必須ドキュメントととして散々紹介した

   Geteting StartedのCreating an iPhone Application
   iPhone OS Programming Guide

から情報が得られる。
 Navigation-Basedから始まってWindow-Basedなど、いろいろ出ているAplicationテンプレート項目の中で、何を選べばいいかは

   iPhone Human Interface Guidelines

から情報が得られる。また、iPhone OS Programming GuideのRelated Documentsで紹介されている

   View Controller Programming Guide for iPhone OS

も必読。ここでチンパンジーゲームに最適なAplicationテンプレートはView-Based Applicationということが解る。選択ボタンを押すとプロジェクト名を聞いてくる。
 名前は当然ChimpanzeeGameだ!

Fig.3

 ずらずらっと、ソースのうちChimpanzeeGameAppDelegate.m/hなどの仕組みは

   Document-Based Applications

から学ぶことができる。Xccでも一度、解説した。
 同じようにChimpanzeeGameViewController.m/h/xib、MainWindow.xlibの関係は

   Interface Builder User GuideのiPhone OS Interface Objects

から読み取れる。なぜmain.mにある

   int retVal = UIApplicationMain(argc, argv, nil, nil);

の1行で、さまざまなアプリケーションに分化するのかもある程度理解できる。

 とりあえず、各ファイルの関係を把握してみなければ...
 ということで、MainWindow.xibをダブルクリックしてInterface Builderを起動。

Fig.4

 表示されたMainWindow.xibのFile's Ownerを選んだ状態でTools>Inspectorメニューを選ぶ。InspectorウィンドウのApplication Connectionsタブを選ぶと、delegateとしてChimpanzeeGameAppDelegateが指定されているのがわかる。

Fig.5

 同じように、今度はChimpanzeeGameAppDelegateを選ぶとApplication ConnectionsではviewControllerにChimpanzeeGameViewController、windowにWindowが指定されているのがわかる。

Fig.6

 ここまでの関係は、こんな感じ。

Fig7

 で、なんでviewへのラインが切れてるかというと、ChimpanzeeGameViewControllerをInspectorウィンドウでのぞくと

Fig.8

となっていて、viewに指定がない。
 Attributeタブを選ぶとその理由がわかる。

Fig.9

 NIB NameにChimpanzeeGameViewControllerが指定されている。別ファイルとなっていた。
 これがChimpanzeeGameViewController.xlib。Xcodeに戻り、こいつをダブルクリックするとMainWindow.xibと同じようなウィンドウが現れる。

Fig.10

 ここで、ViewModeを変えてみると、File's OwnerがChimpanzeeGameViewControllerとなっているのがわかる。

Fig.11

 あらためてFile's Ownerを選択した状態でInspectorウィンドウのApplication Connectionsを見ると、今度はviewに指定がある。

Fig.12

これでようやく、用意された各ソース

   ChimpanzeeGameAppDelegate.m/h
   ChimpanzeeGameViewController.m/h.xib
   MainWindow.xib
   main.m

の、Viewまでの繋がりがハッキリした。かな?

Fig.13

 あとは、このViewにボタンを9つ配置して、各ボタンをChimpanzeeGameViewControllerが操作できるようにし、ボタンが押されたことを通知してもらえるようにすればコントローラの準備ができたことになる。コントロールとしてはRouund Rect Buttonを使ってみよう。

以下次回!