ios - 高さ - ナビゲーションバーを非表示にしますが、前のビュー(ポップ)に移行すると、古い戻るボタンが一時的に表示されます。 どうして?




uibarbuttonitem action 呼ば れ ない (6)

2番目のビューコントローラでは、viewWillAppear ::

self.navigationController.navigationBar.frame = CGRectMake(0, 0, 0, 0);

ナビゲーションバーの表示を非表示にするには、viewWillDisappearのフレームを設定します。

self.navigationController.navigationBar.frame = CGRectMake(0, 0, 320, 44);

私は、ナビゲーションコントローラ(ルート: ReadingViewControllerReadingViewControllerReadingViewController )にビューコントローラを持っていますが、2番目のビューコントローラでは、 UIToolBarナビゲーションバーを無効にしたい(タイトルが不要で、 iBooksまたはFacebookアプリ)。 問題は、2番目のビューでナビゲーションバーを非表示にすると、ビューコントローラをポップすると(1つ前に戻る)ランダムに1秒間表示されます。

ビューコントローラをポップアップすると、戻るボタンが1秒間表示されます。

2番目のビューコントローラでは、 viewWillAppear:のnav barを非表示にします。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

また、2番目のビューコントローラでは、私はviewWillDisappear:を復元します。

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    // ... other stuff

    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

私はどのように私はこの問題を戦うためには、ビューコントローラがシームレスに移行するのだろうかと思っています。


あなたの質問から理解できるように、現在のアプローチの唯一の問題は、元の「戻る」ボタンの一時的な外観です。 では、ビューコントローラのこのボタンをブロックするだけではどうですか?

self.navigationItem.hidesBackButton = YES;

私はそれが助けるかもしれないと思う。 しかし、あなたの主な仕事のために、私はむしろあなたが望むだけ多くのボタンを追加する能力を持つカスタムナビゲーションバーを使用することをお勧めしたいと思います。 このようなアプローチはiOSにとってより自然であり、あなたの質問で言及したような問題には決して直面しません。


これは、 viewWillDisappearからviewWillDisappearへコードを移動するのと同じくらい簡単viewDidDisappear

また、どのビューでもアニメーションを使用することは避けてください*ビュー遷移は既にアニメーション化されているので、メソッドが表示されます。


こんにちは、次のものは私の仕事をした

FirstViewControllerこのメソッドを配置する

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

SecondViewControllerにこのメソッドを配置します

- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

私は私の仕事のためにviewWillDisappearを使用していません。

希望があなたを助けます。


私の問題は、左側から移動したカスタマイズされたトランジションを使用して、navigationBarを使用してviewControllerをプッシュすると、2番目のビューコントローラのフレームに従うことができないということです。 このアクションを実行するたびに、常に上から落ち込み、非常に不快な結果を出します。


親ビューコントローラに表示されるナビゲーションバーを表示し、アルファを0から1に遷移させることができます:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    self.navigationController.navigationBar.hidden = NO;
    self.navigationController.navigationBar.alpha = 0;

    [UIView animateWithDuration:0.3 animations:^{
        self.navigationController.navigationBar.alpha = 1;
    }];
}






uistoryboardsegue