0

ボタンで2番目のビューにリンクし、ナビゲーションバーの「戻る」ボタンを介してリンクバックするメインがあります。メイン ビューのナビゲーション バーを非表示にして、シーン ビューのみに表示したいです。

メイン ビューのナビゲーション バーを非表示にしましたが、最初の起動時には正常に見えますが、2 番目のビューがスタックからポップされるとすぐに、メイン ビューに空のナビゲーション バーが表示されます。

メイン ビューが現在表示されているかどうかを検出し、表示されているときはいつでもナビゲーション バーを非表示にする方法はありますか? または、私が抱えている問題に対する他の修正はありますか?

よろしくお願いします。

4

2 に答える 2

1

これは、navigationController スタックのビュー コントローラーを介して実行されます。あなたのクラスの種類を見つけたら、あなたがしなければならないことは何でもしてください!

for ( UIViewController *vc in [self.navigationController viewControllers]) {
      if ([vc isKindOfClass:[YourClass class]]) {
             // do something
      }
}

編集

これにより、mainviewcontroller が表示されているかどうかが確認されます。

if ([[self.navigationController topViewController] isKindOfClass:[yourmainviewcontroller class]]){
    self.navigationController.navigationBarHidden = YES;
}else{
    self.navigationController.navigationBarHidden = NO;
}
于 2013-03-04T19:22:29.510 に答える
1

あなたはこれについて少し間違った方法で進んでいます。スタック上の特定のビュー コントローラーを探してそのプロパティを変更する代わりに、2 つのビュー コントローラー内で直接実行します。viewWillAppear:メソッドとviewWillDisappear:メソッドを使用し ます。

最初(上)のView Controller:

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

2 番目 (子) のビュー コントローラー:

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

子ビュー コントローラーのコードはオプションです。さらに子ビュー コントローラーがある場合は、使用しないでください。

于 2013-03-04T20:09:08.613 に答える