0

vA と vB の 2 つのコントローラーを備えたナビゲーション ベースのアプリがあります。

vA はナビゲーション コントローラーのルート ビュー コントローラーであり、フル スクリーン コントローラーであるため、このコントローラーが表示されている場合、ナビゲーション バーは非表示になります。

次に、使用してvBをプッシュします

[self.navigationController pushViewController:vB アニメーション:YES];

vB の viewDidLoad で私はこれを持っています:

self.navigationController.navigationBarHidden = NO;
// then I have navigation buttons defined here

右から画面に入る vB のアニメーションは、次のように発生します。

  1. vAにnavigationBarが突然表示される
  2. vB は右からスライドして画面いっぱいに表示されます。

vBをポップアウトすると、これが起こります

  1. vB が左にスライドし、vA が後ろに表示されます。
  2. この時点で、navigationBar が上部に表示された vA が表示されます。vA では、ナビゲーション バーが表示されないようにする必要があります。次に、そのナビゲーションが消え、vA がフルスクリーンにサイズ変更されます。

このアニメーションには優雅さがなく、ひどく、ぎこちなく、間違っています。

私が欲しいのはこれです: ナビゲーションは vB と一緒にスライドインおよびスライドアウトします。

それ、どうやったら出来るの?

ありがとう。

4

2 に答える 2

2

vcBのviewDidLoadで使用したメソッドのアニメーションバージョンを使用する必要があります。

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

編集後:viewDidLoadまたはviewWillAppearのいずれかで正常に機能しているようです(ただし、viewDidAppearでは機能しません)。戻るには、viewWillDisappearにある必要があります。

于 2012-11-09T03:20:06.090 に答える
1

次のことを試してください。

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

- (void)viewDidDisappear:(BOOL)animated {
    [self.navigationController setNavigationBarHidden:NO animated:animated];
    [super viewDidDisappear:animated];
}
// OR viewWillDisappear as mentioned by @RubberDuck

でナビゲーション バーを非表示にする代わりにviewDidLoad、実装viewWillAppearしてviewDidDisappear

于 2012-11-09T03:11:29.527 に答える