忍者ブログ

[PR]

2017年09月23日
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Tab Bar ControllerとNavigation Controller

2009年01月23日
Xcodeで新規作成時にTab Bar Applicationを選ぶと、画面の下にTab Barがあり、2つのビューを切り替えて表示できる状態になります。さて、ここでそれぞれのビューへの参照はどうすれば得られるのでしょう。これを考える時、Interface Builderがヒントになります。View Modeを中央のツリー表示に切り替えてみましょう。Tab Bar Controllerが一番上の階層にあります。その下にそれぞれのView Controllerがぶら下がっています。それぞれのView ControllerをNavigation Controllerに変えた場合には、Tab Bar Controllerが一番上にあるままで、その下がNavigation Controllerで、その下にView Controllerが配置されます。なお、Interface BuilderでのTab Bar Controllerは代表クラスにあるtabBarControllerのことです。それぞれのタブの項目は配列に格納されているので、例えば左から数えて2番目のタブの項目にあるView Controllerのid値は代表クラス内で表記するなら、

単なるView Controllerの場合:
[[tabBarController viewControllers] objectAtIndex:1]

Navigation Controllerの場合で今表示中扱いのViewのController:
[(UINavigationController *)[[tabBarController viewControllers] objectAtIndex:1] topViewController]

という具合になります。じゃあ代表クラス外ならどうなるかというと、以前の記事に書いたように、

Tiny3DAppDelegate *appDelegate = (Tiny3DAppDelegate *)[[UIApplication sharedApplication]delegate];


というような感じでまず代表クラスの参照を得てから、先ほどのtabBarControllerをappDelegate.tabBarControllerに置き換えて表記します。これまでに代表クラスのヘッダをインポートしていない場合には、忘れずにインポートしておきましょう。
PR
Comment
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Trackback
トラックバックURL: