Die Navigationsleiste wird beim Klicken auf die Ansicht angezeigt

8

Ich hänge das Video meines Problems an. Wenn ich auf eine beliebige Stelle in der Viewcontroller-Navigationsleiste klicke, wird diese angezeigt

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

Der obige Code, der in der Ansicht hinzugefügt wurde, wird anfangs angezeigt. Wenn ich jedoch auf eine beliebige Stelle in der Navigationsleiste des Bildschirms klicke, wird diese angezeigt.

Kishor Soneji
quelle
Sind Sie mit SceneDelegate?
Rob
Dieses Projekt wurde in xcode 10
kishor soneji
Können Sie mir zeigen AppDelegate, wo Sie Ihre definiert haben NavigationController?
Rob
let storyboard: UIStoryboard = UIStoryboard (Name: "Main", Bundle: nil) let navigationController: UINavigationController = storyboard.instantiateInitialViewController () as! UINavigationController lässt rootViewController: UIViewController = storyboard.instantiateViewController (withIdentifier: "NexaRootSideMenuViewController") als! NexaRootSideMenuViewController navigationController.viewControllers = [rootViewController] navigationController.isNavigationBarHidden = true appdelegate.window? .RootViewController = navigationController
kishor soneji
1
Versuchen Sie dies:navigationController.setNavigationBarHidden(true, animated: false)
Rob

Antworten:

3

Endlich funktionieren diese Lösungen für mich

self.navigationController?.navigationBar.transform = CGAffineTransform(translationX: 0, y: -200)
Kishor Soneji
quelle
2
Dies ist eine Lösung, aber sie bewegt die Navigationsleiste vom Bildschirm. Das Verhalten beim Anzeigen der Navigationsleiste beim Tippen ist weiterhin vorhanden. Ich würde vorschlagen, die wahre Ursache zu lösen und eine angemessene Lösung zu finden.
Eelco Koelewijn
0

Versuchen Sie den folgenden Code, den ViewControllerSie ausblenden möchtenNavigationBar

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
}

Und ADD Below Code in Other, den ViewControllerSie anzeigen möchten Navigationbar(Nicht in jedem anderen ViewController, nur in ViewControllerIhnen Push oder Pop von diesem ViewController)

self.navigationController?.setNavigationBarHidden(false, animated: true)
Nayan Dave
quelle
Nein, Sir. Wenn ich auf den Bildschirm
tippe, um die Zeitnavigation
0

Versuchen Sie es mit der globalen Warteschlange

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

oder fügen Sie diesen Code einfach hinzu viewDidAppear

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

Wenn diese beiden nicht funktionieren, überprüfen Sie Ihr Ansichtstippereignis. Möglicherweise wurde Code für die Navigation hinzugefügt

NøBi Mac
quelle
Nein, Sir. Wenn ich auf den Bildschirm
tippe, um die Zeitnavigation
1
Ich habe gesehen, dass möglicherweise ein Ereignis ausgelöst wird. Benutzerinteraktion der Ansicht deaktivieren : self.view.isUserInteractionEnabled = false. und versuchen Sie auf Ihren Bildschirm zu tippen, während die Navigation nicht angezeigt wird.
NøBi Mac
Kein Ereignis Feuer auf Tap @ NøBi Mac
kishor soneji
Haben Sie die Benutzerinteraktion auf Ihrem Bildschirm deaktiviert?
NøBi Mac
Wenn Sie die Superview-Benutzerinteraktion deaktivieren, wird die Deaktivierung der untergeordneten Ansicht automatisch deaktiviert.
Kishor Soneji
0

Überprüfen Sie Ihre wichtigsten UINavigationController-Storyboard-Eigenschaften im Storyboard und deaktivieren Sie die Option "Balken ausblenden, wenn sie vertikal kompakt sind" und "Balken beim Tippen ausblenden". Dadurch wird die Navigationsleiste angezeigt, wenn Sie auf Ansicht klicken.

Wenn Sie UINavigationController programmgesteuert erstellen, verwenden Sie den folgenden Code.

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

Geben Sie hier die Bildbeschreibung ein

Sand'sHell811
quelle
Diese Antwort funktioniert nicht
kishor soneji
Ändern Sie dies in Ihrer AnsichtWillAppear "navigationController? .hidesBarsOnTap = false" und ich habe meine obige Antwort bearbeitet und versucht, hauptsächlich alle Optionen unter "Balken im Storyboard
ausblenden
überschreiben func viewWillAppear (_ animiert: Bool) {self.navigationController? .setNavigationBarHidden (true, animiert: true) self.navigationController? .isNavigationBarHidden = true self.navigationController? .hidesBarsOnTap = false}
Sand'sHell821
Bitte überprüfen Sie mein Video. Die Ansicht wird bereits angezeigt, aber das Problem tritt auf, wenn der Benutzer nach wenigen Bewegungen auf die Ansicht klicken. Die Navigation wird angezeigt. @ Sam'sHell811
kishor soneji
Ich habe Ihr Video gesehen. Haben Sie den obigen Schritt versucht, um Ihr Problem zu lösen? Ich habe dasselbe Szenario erstellt. Wenn jemand die Option "Balken ausblenden" und "Wenn vertikal kompakt" aktiviert hat, tritt dieses Problem auf. Deaktivieren Sie es im Storyboard oder ändern Sie beide Eigenschaften programmgesteuert auf false, wie ich in Ihrem obigen Code gesehen habe. Sie haben hidesBarOnTap = true verwendet, wodurch das Problem verursacht wird. Machen Sie es also falsch.
Sand'sHell811
0

VERSUCHEN SIE UNTEN

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

override func viewWillDisappear(_: Bool) {
    super.viewWillDisappear(true)
    navigationItem.title = ""
}
JhonnyTawk
quelle
Überprüfen Sie diese Lösung. @ kishor-soneji
JhonnyTawk
Bitte überprüfen Sie das Video @JhonnyTawk Die Navigationsleiste wird zunächst ausgeblendet, wenn ich auf das Fenster klicke, in dem die Zeitnavigation angezeigt wird.
Kishor Soneji