3

私は困惑しています。UINavigationControllerを使用していて、1つのビューで戻るボタンを非表示にしようとしています。しかし、そうすると、次のレベルのビューの戻るボタンも非表示になります。

- (void)viewWillAppear:(BOOL)animatedが持っている:

[self.navigationItem setHidesBackButton:YES animated:NO];

そして- (void)viewWillDisappear:(BOOL)animated私は持っています:

[self.navigationItem setHidesBackButton:NO animated:NO];

これにより、戻る直前に戻るボタンが表示されます(これはその呼び出しの正しい機能のようです)。だから私は置くのに疲れました

[self.navigationItem setHidesBackButton:NO animated:NO];

次の- (void)viewWillAppear:(BOOL)animatedビューので、それはまだ機能しません。

self.navigationItem.backBarButtonItemこれは、トップビューのすぐ下のビューである場合に、そのビューの戻るボタンがどのようになるかを参照しているため、少し混乱します( ref)。ただし、上面図( refself.navigationItem.hidesBackbutton )のときに戻るボタンが表示されるかどうかです。では、なぜ次のビューの戻るボタンが非表示になるのか、誰かが知っていますか?

もう1つの奇妙なことは、別のビューを下に移動すると機能することです。より視覚的な表現のために、私が次のビューを持っているとしましょう:

A > B > C > D

Bは私が懸念している見解です。Aに行く戻るボタンを非表示にしたいのですが、そうするとCの戻るボタンも非表示になります。しかし、Dまで下げると、戻るボタンが表示され、すべてが「本来あるべき」ように機能します。つまり、Cに戻ってから、Bに戻ることができます。Bでは戻るボタンが非表示になっており、Cに戻ると戻るボタンが表示されます。

何か案は?

4

3 に答える 3

9

を処理するときに戻るボタンの表示と非表示に関して、ある種のバグがあるようですUINavigationController。あなたと同様の問題は、NavigationControllerのbackButtonが表示されないことです。

私はこれに関していくつかのテストを行いました。ここでの説明はありませんが、役立つ可能性のあるいくつかの提案があります。

  • inにのみ電話をかけ、setHidesBackButton:animated:inには電話をviewDidAppear:かけないviewWillAppear:
  • self.navigationItem.hidesBackButtonどこにも使用しないでください。
于 2010-12-07T18:50:52.383 に答える
4

このばかげたバグを回避するために、私はsetHidesBackButtonをまったく実装しませんでしたが、viewDidLoadに次のように配置しました。

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc] init]];
于 2013-03-09T00:21:05.207 に答える
1

戻るボタンを非表示にしても、ユーザーがボタンをクリックするのを妨げないことをご存知だと思いますか?

クリックを防ぐには、nilに設定する必要があります。

 self.navigationItem.leftBarButtomItem = nil;

viewWillAppear次に、「B」のメソッドで新しい戻るボタンを作成できます。

于 2010-12-07T18:33:01.053 に答える