現在の UINavigationController では、viewControllers スタックは次のようになります。1 -> 2 -> 3. ただし、2 番目のコントローラーから 3 番目のコントローラーに移行する前に、2 番目のコントローラーをポップして、3 番目のコントローラーがポップされたときに 1 番目のコントローラーが一番上になるようにします。
[self.navigationController popViewControllerAnimated:NO];
[self.navigationController pushViewController:controller animated:YES ] ;
しかし、どういうわけかこれを行うと、navigationBar の色が元の青のデフォルトから黒のスタイルに変わります。新しいコントローラーの viewWillAppear または viewWillDisappear で barStyle を UIBarStyleDefault に明示的に設定しても効果はありません。奇妙なことに、barStyle を設定すると、1 -> 2 の遷移でもバーの色が黒に変わります。
この投稿を書き終える頃には、次のコードで問題が解決していることに気付きました。
navBar.barStyle = UIBarStyleDefault-1;
デフォルトの色を実際に取得するために、デフォルトから 1 を引く必要があるのはなぜですか?