Ocultar NavBar al tocar no funciona
Frecuentes
Visto 182 veces
1
Implementé con éxito UIGestureRecognizer en mi UIWebView de esta manera:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleTap)];
tap.numberOfTapsRequired = 1;
[myUniqueWebView addGestureRecognizer:tap];
Hay un error en el siguiente fragmento de código, pero la lógica es la siguiente: quiero tocar una vista para ocultar la barra de navegación y, si ya está oculta, quiero usar la misma lógica para mostrarla. Y no funciona:
-(void) handleTap {
NSInteger didHideNavBar;
didHideNavBar = 0;
if ((didHideNavBar = 0)) {
[self.navigationController setNavigationBarHidden:YES animated:YES];
didHideNavBar = 1;
NSLog(@"tap1");
}
if ((didHideNavBar = 1)) {
[self.navigationController setNavigationBarHidden:NO animated:YES];
NSLog(@"tap2");
}
}
Xcode me muestra el mensaje "tap2" y no pasa nada.
4 Respuestas
1
Deberías declarar didHideNavBar
afuera de handleTap
método y agregar return;
al final de la primera if
Me gusta esto:
NSInteger didHideNavBar = 0;
-(void) handleTap {
if ((didHideNavBar = 0)) {
[self.navigationController setNavigationBarHidden:YES animated:YES];
didHideNavBar = 1;
NSLog(@"tap1");
return;
}
if ((didHideNavBar = 1)) {
[self.navigationController setNavigationBarHidden:NO animated:YES];
didHideNavBar = 0;
NSLog(@"tap2");
}
}
Respondido el 12 de junio de 12 a las 13:06
agregaste retorno; al final de la primera si? - Zeus Alejandro
Esto funciona, pero ahora solo funciona una vez! Si escondo la barra de navegación, la vuelvo a mostrar. Ya no puedo mostrarla ni ocultarla. - Serguéi Grischov
planificadas didHideNavBar = 0;
en el segundo if
declaración. Olvidaste hacerlo en tu código - Zeus Alejandro
0
ver su código. está configurando la variable didHideNavBar en 0, que luego, si la condición se configura en 1, su barra de navegación se ocultará y luego se mostrará. y no podrás ver esta actina ya que lo hará en muy poco tiempo.
Respondido el 12 de junio de 12 a las 13:06
Entonces, ¿cómo debo anular este comportamiento? - Serguéi Grischov
0
hola por favor haz tu didHideNavBar
estático, porque cada vez que mangoGrifo se llama el método, asigna valor cero a didHideNavBar
.
así que haz estos cambios
static NSInteger didHideNavBar = 0;
Respondido el 12 de junio de 12 a las 13:06
0
-(void) handleTap {
BOOL isHidden = (parentViewController.navigationController.navigationBar.alpha == 0);
self.navigationController.navigationBar.alpha = (isHidden) ? 1 : 0;
}
Respondido el 12 de junio de 12 a las 14:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas iphone objective-c ios xcode uinavigationbar or haz tu propia pregunta.
comprobar para ver si "
self.navigationController
"es no nulo - Michael Dautermann@MichaelDautermann ¿Podría darme una pista sobre cómo debería verse en el código? - Sergey Grischyov
Simplemente haga un NSLog(@"my NavController %@", self.navigationController); en algún lugar de su código y se muestra el cheque. Si la pantalla es "myNavController (null)", entonces no tiene ningún controlador de navegación y, por lo tanto, no podrá mostrar/ocultar una barra de navegación. Niko
Cuando compare dos valores, debe usar == not =.In if ((didHideNavBar = 0)) use ==.Y como sugiere Zeus, declare NSInteger didHideNavBar = 0; fuera del mangoTap. - Nuzhat Zari
Puede crear una barra de navegación personalizada, eche un vistazo a este [Enlace][1] [1]: stackoverflow.com/questions/10990963/… - iLearner