3

私のアプリには少なくとも12個UIViewControllerあり、ナビゲーションバーが表示されるものと表示されないものがあります。1つのコントローラーを除くすべてのコントローラーですべて正常に動作します。

ナビゲーションバーが表示されていない別の画面からこの画面に移動します。これには、ナビゲーションバーを表示する必要があるので、次のviewWillAppearコードを使用します。

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

デバッガーを使用してコードをステップ実行すると、この行が表示されますが、無視され、ナビゲーションバーは表示されません。これは、シミュレータと実際のデバイス(iOS5.1.1を搭載したiPhone4S)の両方で問題のようです。

ここで何が欠けていますか?

4

4 に答える 4

3

たぶん、私はそれらのAppleのもう1つを「ただ血まみれにやる」ものにぶつけた。

viewWillAppearメソッドにその行があることに加えて、これを次のように追加しましたviewDidLoad

self.navigationController.navigationBarHidden = NO;

今では私が望むように動作します。興味深いことに、2つの行のいずれかを削除しても、機能しません。両方のラインが配置されている場合にのみ機能します。

いずれにせよ、それは今動作します。

于 2012-05-31T14:36:54.557 に答える
3

私も同様の問題を抱えていました。[self.navigationController setNavigationBarHidden:NO animated:YES];それは、私がそのメソッドに持っていたものから逸脱していたビューコントローラーであることが判明しました viewWillDisappear。これにより、のコンテンツに関係なく、トランジションでアニメーション化されました。viewWillAppear

于 2014-11-19T00:22:15.200 に答える
2

その行は、ナビゲーションバーではなく、ツールバーの表示を変更します。

于 2012-05-31T14:29:22.490 に答える
2

多分あなたはこのようなあなたの方法を持っています:

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

したがって、[super ...]の行を上に移動し、次のように変更します(RootViewControllerとターゲットView Controllerの両方で)。

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

これは私のために働きます。

于 2012-10-14T08:50:49.590 に答える