1. ホーム
  2. ios

[解決済み] iPhoneでナビゲーションバーを1ページ目だけ非表示にする

2022-03-26 08:27:17

質問

以下のようなコードで、ナビゲーショナルバーを隠したり表示したりしています。 最初のビューがロードされたときに隠され、その後、"children"が呼び出されたときに隠されます。 問題は、ルートビューに戻ったときに再び隠すためのイベント/アクションが見つからないことです...。

私は手動でアクションを行うルートページ上の"test"ボタンを持っていますが、それはきれいではないので、私はそれを自動にしたいです。

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

解決方法は?

私が見つけた最も素晴らしい解決策は、以下のことを 最初のビューコントローラ .

Objective-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 の実装で、ドキュメントによれば、あなたは は、実装のどこかでスーパーの実装を呼び出す必要があります。 .