Categories
iOS ObjectiveC

Resetear NavigationController dentro de un TabBar

A menudo, utilizar un navigation controller dentro de una opción de un tab bar controller es una buena práctica. Pero el problema con el que nos podemos encontrar es que si cambiamos de opción del tab bar, al volver a la que ya teníamos abierta nos encontramos con que no se reinicia, es decir, la navegación se queda en el punto en el que habíamos llegado. Salvo que volvamos a presionar el icono del tab bar que entonces si que se reinicia.

A menudo, utilizar un navigation controller dentro de una opción de un tab bar controller es una buena práctica. Pero el problema con el que nos podemos encontrar es que si cambiamos de opción del tab bar, al volver a la que ya teníamos abierta nos encontramos con que no se reinicia, es decir, la navegación se queda en el punto en el que habíamos llegado. Salvo que volvamos a presionar el icono del tab bar que entonces si que se reinicia.

Si nos interesa poder hacer que en el primer tap en el icono del tabbar se reinicie automáticamente podemos hacer lo siguiente:


#pragma mark - UITabBarControllerDelegate methods
- (void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    if ([viewController isKindOfClass:[UINavigationController class]]) {
        [(UINavigationController *)viewController popToRootViewControllerAnimated:NO];
	}
}

Este código deberíamos ubicarlo en el viewcontroller o similar que implemente los UITabBarControllerDelegate y UITabBarDelegate.

Leave a Reply

Your email address will not be published. Required fields are marked *