item guidelines color bar ios uinavigationcontroller uinavigationbar uinavigationitem

ios - guidelines - navigation bar swift 4



La barra de navegación ios del botón derecho cambia de posición al presionar el nuevo controlador de vista (2)

Tengo una pila de tres VCs 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, agregué el mismo botón (un botón ''Cerrar sesión'') como elemento del botón de la barra derecha:

UIBarButtonItem *logoutButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"") style:UIBarButtonItemStyleBordered target:self action:@selector(logout)]; [categoriesViewController.navigationItem setRightBarButtonItem:logoutButton]; [[self navigationController] pushViewController:categoriesViewController animated:YES];

Por lo tanto, cada controlador de vista tiene este botón de cierre de 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 se desplaza hacia 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 de por qué esto esta pasando?


Intenta llamar

self.navigationItem.rightBarButtonItem = yourUIBarButtonItem;

Además, ¿cuál es su botón de cierre de sesión, es la clase correcta? Tal vez un poco más de código?


Yo 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 ...].