ビューをクリックするとナビゲーションバーが表示される


8

問題のビデオを添付します。ビューコントローラーのナビゲーションバーのどこかをクリックすると、

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

上記のコードは、viewに追加すると最初は機能しているように見えますが、画面のどこかをクリックすると、ナビゲーションバーが表示されます。


使っていSceneDelegateますか?
ロブ

このプロジェクトはxcode 10で作成されました
kishor soneji

あなたAppDelegateがあなたをあなたが定義した場所で私にあなたを見せてもらえますNavigationControllerか?
ロブ

let storyboard:UIStoryboard = UIStoryboard(name: "Main"、bundle:nil)let navigationController:UINavigationController = storyboard.instantiateInitialViewController()as!UINavigationControllerにrootViewController:UIViewController = storyboard.instantiateViewController(withIdentifier: "NexaRootSideMenuViewController")を指定します。NexaRootSideMenuViewController navigationController.viewControllers = [rootViewController] navigationController.isNavigationBarHidden = true appdelegate.window?.rootViewController = navigationController
kishor soneji

1
これを試してください:navigationController.setNavigationBarHidden(true, animated: false)
Rob

回答:


3

最後に、このソリューションは私のために働きます

self.navigationController?.navigationBar.transform = CGAffineTransform(translationX: 0, y: -200)

2
これは解決策ですが、ナビゲーションバーを画面外に移動することで解決します。タップでナビゲーションバーを表示する動作はまだ発生しています。本当の原因を解決し、適切な解決策をとることをお勧めします。
Eelco Koelewijn

0

ViewControllerあなたが非表示にしたいあなたに以下のコードを試してくださいNavigationBar

DispatchQueue.main.async {
    self.navigationController?.setNavigationBarHidden(true, animated: false)
    self.view.isUserInteractionEnabled = true
    //Below code conflicts with the hidden `NavigationBar` and make it visible on tap so set it false as below
    self.navigationController?.hidesBarsOnTap = false
}

そしてViewControllerあなたが表示したい他のコードの下に追加しますNavigationbar(他のすべてViewControllerではなく、ViewControllerこれからあなたがプッシュまたはポップするだけでViewController

self.navigationController?.setNavigationBarHidden(false, animated: true)

いいえ、画面をタップして時間ナビが表示されるので、ビデオを注意深くご覧ください
kishor soneji

0

グローバルキューで試す

DispatchQueue.global().async {
     navigationController?.setNavigationBarHidden(true, animated: animated)
}

または単純にこのコードを追加します viewDidAppear

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

この2つが機能しない場合は、ビューのタップイベントを確認してください。ナビゲーション用のコードが追加されている可能性があります。


いいえ、画面をタップして時間ナビが表示されるので、ビデオを注意深くご覧ください
kishor soneji

1
ビューのタップでイベントが発生する可能性があることを確認しました。ビューのユーザー操作を無効にします:self.view.isUserInteractionEnabled = false。画面をタップしようとすると、まだナビゲーションが表示されませんか?
野比マック

Tap @NøBiMacでイベントが発生しない
kishor soneji

画面でのユーザー操作を無効にしましたか?
野比マック

スーパービューのユーザー操作を無効にすると、子ビューのユーザー操作が自動的に無効になります。
kishor soneji

0

ストーリーボードでメインのUINavigationControllerストーリーボードプロパティを確認し、[垂直方向にコンパクトな場合はバーを非表示]、[タップ時にバーを非表示]をオフにします。これにより、ビューをクリックするとナビゲーションバーが表示されます。

プログラムでUINavigationControllerを作成する場合は、次のコードを使用します。

UINavigationController().hidesBarsWhenVerticallyCompact = false
UINavigationController().hidesBarsOnTap = false

ここに画像の説明を入力してください


この回答は機能しません
kishor soneji

これをviewWillAppear "navigationController?.hidesBarsOnTap = false"で変更し、上記の回答を編集して試してみました。主に、[ストーリーボードのバーセクションを非表示にする]の下のすべてのオプションをオフにします
Sand'sHell811

オーバーライドfunc viewWillAppear(_ animated:Bool){self.navigationController?.setNavigationBarHidden(true、animated:true)self.navigationController?.isNavigationBarHidden = true self.navigationController?.hidesBarsOnTap = false}
Sand'sHell8121

私のビデオをチェックしてください。ビューは既に表示されていますが、問題は、ユーザーがビューナビゲーションでクリックしたいくつかの動きの後に表示されます@ Sam'sHell811
kishor soneji

私はあなたのビデオを見ました、あなたは上のステップを試してみましたか?これはあなたの問題を解決します私が同じシナリオを作成しました誰かが非表示バー「オンタップ」と「垂直にコンパクト」にチェックを入れた場合、この問題が発生するのでストーリーボードでチェックを外すか両方を変更します上記のコードで見たように、プログラムでプロパティをfalseに設定します。hidesBarOnTap= trueを使用して問題を作成しているため、falseにします。
Sand'sHell811

0

以下を試してください

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.isNavigationBarHidden = true
}

override func viewWillDisappear(_: Bool) {
    super.viewWillDisappear(true)
    navigationItem.title = ""
}

このソリューションを確認してください。@ kishor-soneji
JhonnyTawk

ビデオをチェックしてください@JhonnyTawk最初にナビゲーションバーが非表示になっているウィンドウをクリックすると、ナビゲーションが表示されます。
kishor soneji
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.