UINavigationItemのインスタンス取得
iOSのUINavigationController関連で、rightBarButtonItemの色を変更しよう とした際に、以下のコードだと上手く色が変更できなかった。
UINavigationController *navigationController = [... currentNavigationController]; navigationController.navigationItem.rightBarButtonItem.tintColor = color
理由は、2行目でnavigationController.navigationItemとしている部分で、 インスタンスが取得出来ていないから。
以下のようにして修正した
UINavigationController *navigationController = [HogeController currentNavigationController]; NSArray *navigationItems = navigationController.navigationBar.items; for (UINavigationItem *item in navigationItems) { item.rightBarButtonItem.tintColor = color; }
navigationItemsは、NavigationControllerに積まれているスタックのコントローラが 全て入っている。 上の例だと、全てのスタックに対して、rightBarButtonItemの色を変更しているが、 現在一番上にあるコントローラのみ取得したい場合は、↓でOK
((UINavigationItem *)[navigationItems lastObject] ).rightBarButtonItem.tintColor = color