2

現在の 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 を引く必要があるのはなぜですか?

4

2 に答える 2

1

私は2番目をポップするのではなく、3番目を押すだけです。そして、3回目の使用を却下したとき

[self.parentViewController.parentViewController popViewControllerAnimated:YES];

これは私にとっては戻ってきてスタックをクリーンアップし、すべての通常の属性でコントローラー2を表示せずにコントローラー1に残します。

于 2010-11-30T14:19:44.327 に答える
1

私も同じ問題に直面しました。正式な回答はありませんが、自分のやり方で修正しました。

-(void)viewWillAppear:(BOOL)animated { 
UIColor *navColor = [[UIColor alloc]initWithRed:0.742778 green:0.0181208 blue:0.0271147 alpha:1];
[self.navigationController.navigationBar setTintColor:navColor];}

誰かがもっと良い答えを提案してくれたらいいのにと思います。

于 2011-07-26T08:48:45.353 に答える