La barra de navegación aparece al hacer clic en la vista


8

Adjunto el video de mi problema. Cuando hago clic en cualquier lugar de viewcontroller, aparece la barra de navegación

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

El código anterior agregado en view parece funcionar inicialmente, pero cuando hago clic en cualquier lugar de la pantalla aparece la barra de navegación.


Estas usando SceneDelegate?
Rob

Este proyecto creado en xcode 10
kishor soneji

¿Me puede mostrar su AppDelegate, donde ha definido su NavigationController?
Rob

let storyboard: UIStoryboard = UIStoryboard (nombre: "Main", paquete: nil) let navigationController: UINavigationController = storyboard.instantiateInitialViewController () como! UINavigationController permite que rootViewController: UIViewController = storyboard.instantiateViewController (withIdentifier: "NexaRootSideMenuViewController") como! NexaRootSideMenuViewController navigationController.viewControllers = [rootViewController] navigationController.isNavigationBarHidden = true appdelegate.window? .RootViewController = navigationController
kishor soneji

1
Pruebe esto:navigationController.setNavigationBarHidden(true, animated: false)
Rob

Respuestas:


3

Finalmente estas soluciones me funcionan

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

2
Esta es una solución, pero lo que hace es mover la barra de navegación fuera de la pantalla. El comportamiento de mostrar la barra de navegación de barril sigue ocurriendo. Sugeriría resolver la causa real y hacer una solución adecuada.
Eelco Koelewijn

0

Pruebe el siguiente código en el ViewControllerque desea esconderseNavigationBar

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
}

Y AGREGUE el siguiente código en Otro ViewControllerque desea mostrar Navigationbar(No en todos los demás ViewController, solo ViewControllerpresione o salga de esto ViewController)

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

No señor, cuando toco en la pantalla que aparece la navegación del tiempo, vea el video con cuidado
kishor soneji

0

Probar con cola global

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

o simplemente agregue este código en viewDidAppear

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

si estos dos no funcionan, verifique su evento de toque de vista, puede haber algún código agregado para la navegación


No señor, cuando toco en la pantalla que aparece la navegación del tiempo, vea el video con cuidado
kishor soneji

1
Vi que puede haber algún evento que se dispara al tocar la vista. la interacción del usuario desactivar de vista: self.view.isUserInteractionEnabled = false. e intenta tocar en la pantalla, ¿aún no aparece la navegación?
NøBi Mac

No se disparó ningún evento en Tap @ NøBi Mac
kishor soneji

¿Ha deshabilitado la interacción del usuario en su pantalla?
NøBi Mac

Cuando deshabilita la interacción del usuario de la supervista, deshabilita automáticamente la vista del niño, la interacción del usuario se deshabilita.
Kishor Soneji

0

Consulte las propiedades principales del guión gráfico de UINavigationController en el guión gráfico y desactive la opción "Ocultar barras cuando está verticalmente compacto", "Ocultar barras de barril". Esto hace que la barra de navegación aparezca al hacer clic en la vista.

Si está creando UINavigationController mediante programación, utilice el siguiente código.

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

ingrese la descripción de la imagen aquí


Esta respuesta no funciona
kishor soneji

cambie esto en su vista ¿Aparecerá "navigationController? .hidesBarsOnTap = false" y he editado mi respuesta anterior e intento, principalmente desmarcar todas las opciones en la sección "Ocultar barras en el guión gráfico"
Sand'sHell811

anular func viewWillAppear (_ animated: Bool) {self.navigationController? .setNavigationBarHidden (true, animated: true) self.navigationController? .isNavigationBarHidden = true self.navigationController? .hidesBarsOnTap = false}
Sand'sHell811

Por favor revisa mi video. La vista ya aparece pero el problema se produce después de unos pocos movimientos del usuario, haga clic en la navegación de la vista aparece @ Sam'sHell811
kishor soneji

He visto tu video. ¿Intentaste el paso anterior? Esto resolverá tu problema. He creado el mismo escenario si alguien marca Ocultar barras "Al tocar" y "Cuando está verticalmente compacto", entonces ocurre este problema, así que desmárquelo en el guión gráfico o cambie ambos propiedades falsas programáticamente, como he visto en el código anterior, ha utilizado hidesBarOnTap = true, lo que está creando el problema, así que hágalo falso.
Sand'sHell811

0

INTENTE ABAJO

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

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

Comprueba esta solución. @ kishor-soneji
JhonnyTawk

Verifique el video @JhonnyTawk Inicialmente, la barra de navegación se oculta cuando hago clic en la ventana cuando aparece la navegación.
Kishor Soneji
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.