2010-01-13 13 views
6

Tengo una aplicación basada en la barra de pestañas con navegación en cada elemento de la barra de pestañas. Cuando navego a otra vista en cualquier elemento de la barra de pestañas y hago clic en el elemento de la barra de pestañas, se invoca el controlador de vista raíz en ese elemento de la barra de pestañas. Es como PopToRootView. ¿Podemos deshabilitar esta situación?Desactivar barra de pestañas navegando a la vista raíz

Respuesta

3

Aunque dicen que no se supone a la subclase UINavigationController, puede lo que quiere al hacer una subclase de UINavigationController y reemplazando el método - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;.

Hacer esto (y no llamar al super popToRootViewController) evitará que los controladores de vista aparezcan al hacer clic en el elemento de la barra de pestañas. De alguna manera podría hacerte caer en algunos problemas, pero espero que funcione para ti.

+0

Podría decirme qué significa - (NSArray *) popToRootViewControllerAnimated: (BOOL) animado; con pasar como 'NO' en el parámetro animado. – Himanshu

+0

@mjdth ¿Sabe por casualidad que los problemas no son algo "La aplicación es rechazada por Apple"? De lo contrario, funciona como el encanto. Gracias por tu propina –

6

Sí, puede desactivar la automática popToRootViewController implementando el método UITabBarControllerDelegate en su controlador de vista:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 
    if(self.navigationController == viewController) { 
     return NO; 
    } 
    return YES; 
} 

Gracias a: Disable action - user taps on tabbar item to go to root view controller

2
  1. Incluir UITabBarControllerDelegate en el archivo de cabecera.
  2. probar esto:

    - (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 
        { 
         if(bool_youDontWantPopToRootView) 
          return (tabBarController.selectedViewController != viewController); 
         return YES; 
        } 
    

Para bool_youDontWantPopToRootView, se puede añadir la condición en que cuando se quiere que se comporte como el comportamiento por defecto.

1

- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated; cuando se pasa 'NO' en el argumento animada se le dirigirá a la vista raíz y sin ningún tipo de animación

usted no necesita utilizar este método, mientras se toca en cualquier barra de pestañas de su comportamiento predeterminado del controlador de navegación que mantenga su propia pila de VCs

Cuestiones relacionadas