[iPhone]iPhoneのプロジェクトに新しいviewとcontrollerを追加する手順
先日リリースしたアプリはiPhone SDKのプロジェクト新規作成で選択できる「Utility Application」テンプレートをそのまま利用したのだが、 今作っているRPGでは少なくとも5画面ほど遷移させる必要がある。
Interface Bulderをいじりながら「Utility Application」ベースのプロジェクトに新しいviewとcontrollerを追加することができたので、その手順をメモしておく(手探りで確立した手順なので正しいかどうか自身なし)。
- 「Utility Application」で新規作成したプロジェクトからInterface Bulderを開いておく
 - Interface Bulder => File => New にてCocoa TouchのViewを選択
 - File => Save を選んでFooという名前で保存。このとき作成中のプロジェクトに追加するチェックを入れておく
 - FooというWindowのFile's Ownerをダブルクリックし、Class欄に「FooViewController」と入力する
 - 次にFile's Ownerの下にあるViewをクリックしてClass欄に「FooView」と入力する
 - File's Ownerをクリックし、File => Write Class Files... を実行してFooViewController.hとFooViewController.mを書き出す
 - 次にFile's Ownerの下にあるFoo Viewをクリックし、File => Write Class Files... を実行してFooView.hとFooView.mを書き出す
 - FlipsideViewのソースの中身を書き出したファイルにコピーする
- cp FlipsideView.h FooView.h
 - cp FlipsideView.m FooView.m
 - cp FlipsideViewConroller.h FooViewConroller.h
 - cp FlipsideViewConroller.m FooViewConroller.m
 
 - 作成した.hと.c内の「Flipside」をすべて「Foo」に置換する
 - File's Ownerをクリックして「Foo View Controller Connections」ウィンドウ (左から2番目のタブ)内のOutlets => viewとFoo Viewを接続する
 
ここまででビルドは通るはず。
次に作成したFooViewContorollerを呼び出してFooViewを表示するようにする。
MainViewController.hの次の部分を修正する。
#import "FlipsideViewController.h"
@interface MainViewController : UIViewController <FlipsideViewControllerDelegate> {
}
            以下のように書き換える(動いたけど文法がわからないのでこれでいいのか自信なし)。
#import "FlipsideViewController.h"
#import "FooViewController.h"
@interface MainViewController : UIViewController <FlipsideViewControllerDelegate, FooViewControllerDelegate> {
}
            次にMainViewController.mを書き換えてしまう(もしくは新しいアクション用のメソッドを定義する)。 FilpsideをFooに書き換える。
- (IBAction)showIndo {
	FooViewController *controller = [[FooViewController alloc] initWithNibName:@"FooView" bundle:nil];
	controller.delegate = self;
	
	controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
	[self presentModalViewController:controller animated:YES];
	
	[controller release];
}
            ちなみにUIModalTransitionStyleFlipHorizontalの部分をUIModalTransitionStyleCoverVertical(下から出てくる) やUIModalTransitionStyleCrossDissolve(半透明で徐々に切り替わる)に変えると切り替わるときのアニメーション方法を変えることができる。
あとflipsideViewControllerDidFinishの引数の方をidとしておく(idにするよりもっといい方法があるかもしれない)。
- (void)flipsideViewControllerDidFinish:(id)controller {
	self dismissModalViewControllerAnimated:YES];
}
            これでinfoアイコンをクリックするとFooViewが表示されるようになる。