Hatena::Groupiphone-dev

iPhoneアプリ開発まっしぐら★ このページをアンテナに追加 RSSフィード

引っ越し後の日記はコチラです

tokoromのその他の日記

2010-01-31

UITabBarControllerの"その他"画面と"配置変更"画面のbarStyleの変更

| 13:05 | はてなブックマーク -  UITabBarControllerの"その他"画面と"配置変更"画面のbarStyleの変更 - iPhoneアプリ開発まっしぐら★

UIKit本追加/補足 > UIKit本の内容自体への補足/訂正 > UITabBarControllerの"その他"と"配置変更画面"のbarStyleの変更


UITabBarControllerを利用する際に表示される「その他」画面に表示されるナビゲーションバーの色は、UITabBarControllerのnavigationBar.barStyleを変更しても変わることはない。

f:id:tokorom:20100131130209p:image

このナビゲーションバーの色を変更するには、以下のようにUITabBarControllerのmoreNavigationControllerプロパティのnavigationBar.barStyleを変更する必要がある。

// selfはUITabBarControllerのインスタンス
self.moreNavigationController.navigationBar.barStyle = UIBarStyleBlack;

これにより、その他画面のナビゲーションバーの色が変更される。

f:id:tokorom:20100131130330p:image

ただ、これで安心してはいけない。

これだけだと、その他画面の[編集]ボタンをタップしたときに遷移する配置変更画面のナビゲーションバーまでは変更されないのだ。

f:id:tokorom:20100131130331p:image

ここも変更したい場合、UITabBarControllerDelegateのtabBarController:willBeginCustomizingViewControllers:メソッドを以下のように実装する。

// tabBarControllerのdelegateにselfが設定されていること
// self自体がUITabBarControllerのインスタンスなら self.delegate = self;
- (void)tabBarController:(UITabBarController*)tabBarController
  willBeginCustomizingViewControllers:(NSArray*)viewControllers
{
  UIView* subviews = [tabBarController.view.subviews objectAtIndex:1];
  UINavigationBar* navigationBar = [[subviews subviews] objectAtIndex:0];
  navigationBar.barStyle = UIBarStyleBlack;
}

これで、その他画面と配置変更画面の両方のナビゲーションバーの色が変更されたはずだ。

f:id:tokorom:20100131130332p:image


■参考URL: http://blog.noizeramp.com/2009/08/06/iphone-black-navigation-bar-in-more-view/