Cambiar entre UITabBarController y UINavigationController
-
05-09-2019 - |
Pregunta
La funcionalidad principal de mi aplicación es controlado por un UITabBarController. Sin embargo, tengo que cargar una vista que tiene una UINavigationController. Cuando vuelvo a mi UITabBarController utilizando
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:0];
Mi UITabBarController ya no responde a los clics. Parece que la vista no tiene el foco.
Sin embargo, si utilizo este código para volver a la UITabBarController:
[window addSubview:tabBarController.view]
Mis botones responderán. Siento como "addSubview" es menos eficiente porque nunca me quito la vista desde la ventana y por lo tanto debe ser la adición de una segunda copia de la vista a la pila. ¿Estoy en lo correcto? ¿Hay una manera de utilizar el primer método y hacer mis botones responden? Por favor, hágamelo saber.
Solución
Parece que tal vez usted está presentando el controlador de navegación de forma incorrecta. Que definitivamente no debe ser la adición de puntos de vista directamente a la ventana. ¿Quieres presentarlo utilizando
[myTabBarController presentModalViewController:myNavController animated:YES];
Cuando haya terminado con el controlador de navegación de descartarlo con
[myTabBarController dismissModalViewControllerAnimated:YES];
y todo debería funcionar.
Por cierto, todo esto está documentado en la documentación para UIViewController y el "View Controller Guía de programación para iPhone OS" documento.