iPhoneアプリ開発の虎の巻
HOME > UINavigationController

UINavigationController

UINavigationControllerクラスは、階層的な画面遷移を管理するクラスです。
下右図のようにUINavigationControllerの下にルート画面があり、その下にサブ画面がぶら下がっているイメージです。

ナビゲーションコントローラ画面 ナビゲーション概念図

UINavigationControllerのクラス階層

NSObjectUIResponderUIViewController ↑ UINavigationController

生成

// 生成
UINavigationController *nav =
   [[UINavigationController alloc] initWithRootViewController:ルート画面]; // 自身を管理しているUINavigationControllerを取得 self.navigationController;

※階層的な画面遷移の一番元となるルート画面(UIViewControllerのサブクラス)の指定は必須です。

UINavigationControllerのプロパティ

【UINavigationControllerの主要プロパティ】
プロパティ名/型 読専 説明
delegate
(UINavigationControllerDelegate)
デリゲートを指定する
(例)nav.delegate = self;
visibleViewController
UIViewController
viewControllers
NSArray
管理している全画面
navigationBar
UINavigationBar
ナビゲーションバー
navigationBarHidden
BOOL
ナビゲーションバーの表示・非表示の指定
(例)nav.navigationBarHidden = YES;
topViewController
UIViewController
現在表示中の画面
toolbar
UIToolbar
toolbarHidden
BOOL

主要なプロパティのみ掲載しています。
 上記「UINavigationControllerのクラス階層」にあるクラスのプロパティも使用できます。

UINavigationControllerのメソッド

【UINavigationControllerの主要メソッド】
メソッド名 説明
-(void)pushViewController:
(UIViewController *)viewController animated:(BOOL)animated
画面を追加して、追加した画面を表示する
※下記例文1参照
-(UIViewController *)popViewControllerAnimated:
(BOOL)animated
1つ上の画面に戻る
※下記例文2参照
-(void)setNavigationBarHidden:
(BOOL)hidden animated:(BOOL)animated
ナビゲーションバーの表示・非表示設定
※下記例文3参照
-(void)setToolBarHidden:
(BOOL)hidden animated:(BOOL)animated
ツールバーの表示・非表示設定
※下記例文4参照

主要なメソッドのみ掲載しています。
 上記「UINavigationControllerのクラス階層」にあるクラスのメソッドも使用できます。

//(例文1)次画面(nextView)へアニメーションをしつつ遷移する
[self.navigationController pushViewController:nextView animated:YES];
//(例文2)階層を1つ戻る
[self.navigationController popViewControllerAnimated:YES];
//(例文3)ナビゲーションバーの表示・非表示
[self.navigationController setNavigationBarHidden:NO animated:YES];
[self.navigationController setNavigationBarHidden:YES animated:YES];
//(例文4)ツールバーの表示・非表示
[self.navigationController setToolbarHidden:NO animated:YES];
[self.navigationController setToolbarHidden:YES animated:YES];

UINavigationController例文

//ナビゲーションコントローラ例文
UIView *view1 = [[UIView alloc] init];
UINavigationController *nac =
    [[UINavigationController alloc] initWithRootViewController:view1];
[window addSubView:nac.view];
[window makeKeyAndVisible];
//ナビゲーションコントローラを青色にする
self.navigationController.navigationBar.tintColor = [UIColor blueColor];
totop