iPhone ナビゲーションバーを最初のページのみ非表示にする 質問する

iPhone ナビゲーションバーを最初のページのみ非表示にする 質問する

ナビゲーション バーを非表示にしたり表示したりする以下のコードがあります。最初のビューが読み込まれると非表示になり、次に「子」が呼び出されると非表示になります。問題は、ルート ビューに戻ったときに再び非表示になるようにトリガーするイベント/アクションが見つからないことです...

ルート ページに手動でアクションを実行する「テスト」ボタンがありますが、見栄えがよくないので、自動化したいと考えています。

-(void)hideBar 
{
    self.navController.navigationBarHidden = YES;
}
-(void)showBar 
{       
    self.navController.navigationBarHidden = NO;
}

ベストアンサー1

私が見つけた最も良い解決策は、最初のビュー コントローラーで次の操作を実行することです。

オブジェクティブC

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

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

迅速

override func viewWillAppear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
    super.viewWillAppear(animated)
}

override func viewWillDisappear(_ animated: Bool) {
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
    super.viewWillDisappear(animated)
} 

これにより、スタックに次のものをプッシュすると、ナビゲーション バーが左から (次のビューとともに)UIViewControllerアニメーション表示され、スタックの戻るボタンを押すと、ナビゲーション バーが左から (古いビューとともに) アニメーション表示されますUINavigationBar

また、これらはデリゲート メソッドではなく、UIViewControllerこれらのメソッドの の実装をオーバーライドしており、ドキュメントに従って、実装のどこかでスーパー の実装を呼び出す必要があることにも注意してください。

おすすめ記事