8

Tengo una pila de tres VC que se coordinan a través de un controlador de navegación y hacen uso de una barra de navegación. En esta barra de navegación, en cada VC, he añadido el mismo botón (un botón 'Salir') como un elemento de botón de barra de la derecha:ios barra de navegación botón derecho elemento se desplaza al pulsar nuevo controlador de vista

UIBarButtonItem *logoutButton = 
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"") 
            style:UIBarButtonItemStyleBordered 
            target:self 
            action:@selector(logout)]; 

[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton]; 
[[self navigationController] pushViewController:categoriesViewController animated:YES]; 

Así que cada controlador de vista tiene este botón para cerrar sesión en la barra de navegación. Cuando presiono cualquiera de estos controladores en la pila de navegación, los nuevos controles de vista se cargan como se esperaba, todo se muestra y funciona correctamente, pero justo después de que se muestra el nuevo controlador de vista (después de que finaliza la animación) el botón de cerrar sesión cambia aproximadamente 3 px al derecho.

He intentado agregar el botón antes de presionar el VC, en los métodos init del VC, en viewDidLoad y viewDidAppear, pero sigue teniendo el mismo comportamiento. Parece que no puedo deshacerme de este cambio.

Lo extraño es que el botón Atrás desaparece y reaparece al presionar el nuevo VC (usando la animación predeterminada) pero el botón 'Cerrar sesión' parece permanecer en su lugar y simplemente cambiar a la derecha una vez que termina la animación. Además, la fuente de los botones no es la fuente predeterminada, pero una de las fuentes del sistema (luz Helvetica) puede estar relacionada con esto.

¿Alguna idea sobre por qué esto está sucediendo?

+0

Es porque no estoy usando la fuente predeterminada. De alguna manera, cuando se presiona el botón con una fuente diferente a la pantalla, su cuadro debe ser recalculado, o esta es mi mejor suposición. –

+0

Estoy teniendo el mismo problema, ¿terminaste arreglando? –

Respuesta

0

intente llamar

self.navigationItem.rightBarButtonItem = yourUIBarButtonItem; 

también lo es su botón de cierre de sesión, que es la clase correcta? Tal vez un poco más de código?

1

Tuve el mismo problema. Es debido a que su control de raíz no está configurado. Establezca la página principal o la primera página donde su primera barra de navegación se originaría como rootviewcontroller. Desde allí [self.navcontroller] pushviewcontroller ...].

Cuestiones relacionadas