2013年3月6日水曜日

呼び出したモーダルビューのナビゲーションバーの色を指定する場合は呼び出す側で指定する

呼び出したモーダルビューのナビゲーションバーの色を指定する方法をメモで。

ナビゲーションバーの色の変更

今回はおそらく一般的である、UIViewControllerを継承したクラス(MainViewController)からモーダルビュー(ModalViewController)を呼び出します。

MainViewController.h

ModalViewController *modalViewController=[[ModalViewController alloc]init];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:modalViewController];
navController.navigationBar.tintColor=[UIColor colorWithRed:0 green:0 blue:0 alpha:255];  //ここで色の指定
[self presentModalViewController:navController animated:YES];  //モーダルビュー呼び出し
[modalViewController release];
[navController release];
上のように定義してあげれば呼び出したモーダルビューのナビゲーションバーの色が変化します。

でも前のエントリで・・・

実は前にモーダルビューのナビゲーションバーの色について書いたことがあるのですが(こちらの記事です)、そのときは以下のように、モーダルビュー側のviewDidLoadメソッドで色の指定をしていました。

ですが今回はなぜかこの方法だと色の変更はされませんでした。

ModalViewController.m

- (void)viewDidLoad
{
    self.navigationController.navigationBar.tintColor = [UIColor blueColor];  //ここで指定しても色の変更がされなかった
    [super viewDidLoad];
}

うーん、この違いはなんなんだ・・・。

参考記事

UINavigationController change navigation bar tint color globally and programmatically - Stackoverflow

0 件のコメント:

コメントを投稿