2011年5月22日日曜日

[iOS] UINavigationControllerで階層的に画面を切り替える


【開発環境】Xcode4、iOS4.3

UITabBarControllerの他に画面を切り替えるコントローラとして、UINavigationController(ナビゲーションコントローラ)があります。タブバーコントローラは、画面を並列的に切り替えるのに対して、ナビゲーションコントローラは画面を階層的に切り替えることができます。要するに、ユーザーの操作に応じて、新しく画面を開くことができ、また直前の画面に戻ることができます。


よく一覧表示の画面に使われています。画面上部にナビゲーションバーが表示され、直前の画面に戻るボタン現在の画面タイトルが表示されます。


ナビゲーションコントローラとタブバーコントローラは組み合わせて使うこともできます。ただ、タブバーコントローラの中にナビゲーションコントローラに使います。こんな感じになります。画面上部にナビゲーションバー、画面下部にタブバーコントローラが表示されています。

それでは、ナビゲーションコントローラを利用する手順について説明します。ここでは、前回までに作成したタブバーコントローラに追加する例を挙げます。

1.[MainWindow.xib]を開きます。左下の[→]のボタンをクリックして、画面に配置したオブジェクト一覧を表示させます。


2.↓のように画面内のオブジェクト一覧が表示されます。例えば、[Tab Bar Controller]の中に[UIViewController]が複数入っていることが分かります。


3.前回までは、[UIViewController]をタブバーところにドラッグして追加しましたが、今回は画面内のオブジェクト一覧から追加します。オブジェクトライブラリから[Navigation Controller]をドラッグします。


4.追加したナビゲーションコントローラを選択すると、画面内にナビゲーションバーが表示されていることが分かります。あと、左側の画面内のオブジェクト一覧を展開すると、[View Controller]を比べて、[Navigation Bar]と[View Controller]の2つが多いことが分かります。ここの[View Controller]を変更することで、最初に表示するビューコントローラを設定できます。


5.[View Controller]をカスタムビューコントローラに変更します。以前作成したカスタムテーブルビューコントローラに変えてみます。
①画面内のオブジェクト一覧から[View Controller]を選択します。
②アイデンティティインスペクターを開きます。
③[Class]でカスタムコントローラのクラスを選択します。
(ここでは”CourseListViewController”を選択します)


6.ついでにタブバーコントローラのアイコンも変えます。

①画面内のオブジェクト一覧から[Tab Bar Item]を選択します。
②アトリビュートインスペクターを開きます。
③[Title](ラベル)と[Image](画像)を変更します。




6.ここまででシミュレータを起動してみる。


次回、ナビゲーションコントローラで新しい画面を開く

0 件のコメント:

コメントを投稿