このページは「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クラスの定義を編集するのです。