このページは「iPhoneプログラミング入門」(工学社刊、ISBN 978-4-7775-1541-7)を読んで、もっと先へ進んでみたいと思った人への説明です。

次へ->
<-前へ
「次の一歩」一覧へ

最も簡単なモーダルビューの作り方2

AppDelegateクラスの編集

FirstModalAppDelegateでは、もうナビゲーションコントローラの導入は終わりました。ですから、さらにすることは、infoボタンのアクションshowInfo:の定義だけです。
このshowInfo中で、 InfoViewControllerクラスのオブジェクトも作ります。そして、それをモーダルビューコントローラに指定する(presentModalViewController:animated:)のです。

ヘッダファイル

FirstModalAppDelegate.hに、アクションshowInfo:を追記します。

実装ファイル

アクションshowInfo:の中身は、リスト1の通りです。
リスト1 モーダルビューとしてInfoViewControllerのビューを表示させるメソッドshowInfo:
-(IBAction)showInfo:(id)sender{

	InfoViewController *infoViewController=
	[[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
	
	[self.navController presentModalViewController:infoViewController animated:YES];
	[infoViewController release];

}
リスト1は「最も簡単なナビゲーションの作り方」でやった移動先をRedViewControllerに固定する書き方とかなりよく似ていることがわかります。
灰色の部分は、そのようにすでに学んでいる部分です。太字でない黒い部分は、クラス名や変数名だけが替わっている部分です。
機能として決定的に違っているのが、太字の部分です。pushViewControllerがpresentModalViewControllerに替わっています。ホントはメソッドごと置き換えるという考えではanimated:も太字にしなければいけないんですが、どこが一番違うのかをわかりやすくするために、太字にしないでいます。

なお、固定した移動先の指定ですから、InfoViewController.hをインポートしておくのを忘れないようにします。

プログラムとNIBファイルのアクションを結びつける

MainWindow.xibを開きます。Bar ButtonではなくInfo Light Buttonを選択して、そのコネクション・パネルを出します。
Info Light Buttonのイベント「Touch Up Inside」を、FirstModal App DelegateのshowInfo: メソッドと結びつけます。

NIBファイルも含めて全てのファイルを保存したら、ビルド・実行します。
ナビゲーションバーの「info」ボタンをクリックすると、なんとボタンが光ります。そして、InfoViewControllerのビューがニョロンと出てきますね。
でもまだ、「OK」をクリックしてもそのビューは引っ込みません。引っ込めるためには、InfoViewCotrollerクラスの定義を編集するのです。
モーダルビューになるViewControllerクラスの定義を編集して、引っ込むようにします