Pregunta

Tengo un UITabBarController con un conjunto de fichas. Algunos de ellos, cuando se selecciona, se muestran una mesa. Las células de la tabla, si se toca, llevar al usuario a una pantalla de detalles del objeto en la propia célula usando un "pushViewController".

Cuando hago clic en una pestaña diferente, y estoy en la página de detalles, veo la página de nueva pestaña. Y esto está muy bien. Cuando hago clic de nuevo a la pestaña anterior me gustaría haber vuelto a demostrar la mesa y no la página de detalles ...

¿Es esto posible?

Gracias!

¿Fue útil?

Solución

Es posible. Código:

// Called when the user selected a tab. In iOS3+, called even when no change occurs.
- (void)tabBarController:(UITabBarController *)tabbarcontroller didSelectViewController:(UIViewController *)viewController
{
    UINavigationController *nav = (UINavigationController *)viewController;
    [nav popToRootViewControllerAnimated: NO];
}

Explicaciones:

  • esto es en su AppDelegate.
  • Su AppDelegate es un UITabBarControllerDelegate.
  • Usted fija su delegado de UITabBarController (en InterfaceBuilder) a la AppDelegate.
  • Las pestañas deben contener controladores de raíz que son controladores de navegación (debe ser, de lo contrario su no sería capaz de detalles de 'empuje').

Otros consejos

Véase el protocolo UITabBarControllerDelegate para establecer qué controlador será notificado cuando se conmutan lengüetas a continuación, sólo pop el controlador detalle usando eso.

Por cierto, también se puede hacer la mayor parte de esta configuración del controlador de navegación en el constructor de interfaces como esto:

text alt

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top