Pregunta

Estoy trabajando en una aplicación que me gustaría usar el mismo híbrido de navegación y barras de pestañas que usa la aplicación iPod / Música para navegar por las listas de reproducción.

Básicamente:

  • La navegación para tratar de profundizar en un árbol de lista en particular.
  • Una barra de pestañas en la parte inferior para cambiar entre listas, que aparece en la mayoría / todas las subpantallas.
  • El contenido de la barra de pestañas es constante entre todas las pantallas.
  • La reacción de la barra de pestañas al ser pulsada es la misma en todas las pantallas: hace que el usuario vuelva a la raíz y la ponga en esa lista.

¿Navegación incrustada en pestañas, pestañas incrustadas en navegación? Tampoco parece que va a hacer todo lo que quiero. Por otro lado, si me quedo con una aplicación de navegación básica y solo agrego las pestañas, ¿no voy a tener un montón de código adicional?

¿Cuál es el mejor enfoque básico para esto?

¿Fue útil?

Solución

He construido aplicaciones que hacen justamente esto. La mejor manera de pensarlo es comenzar en la parte más estrecha, los controladores de vista individuales. En el ejemplo de iPod, esto incluiría controladores para Artistas, Álbumes, Listas de reproducción, Canciones, etc. Tenga en cuenta que si toca una lista de reproducción, lo llevará a una lista de canciones. Estos son dos controladores de vista separados.

Cada una de las pestañas que ves en la aplicación iPod tienen un controlador de navegación en ellas. El controlador de navegación envuelve los controladores de vista raíz de las pestañas de la aplicación. Y luego, cada uno de los controladores de navegación se establece como ViewControllers del controlador de pestaña. El código se vería algo como esto

FirstTabViewController *first = [[FirstTabViewController alloc] init...];
SecondTabViewController *second = ...;

UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:first];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:second];

myTabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2, nil];
// Then make sure to release things to avoid leaks

Si quisiera manejar la transición desde, por ejemplo, Listas de reproducción- > Lista de canciones en una lista de reproducción seleccionada, haría esto en el controlador de visualización de la Lista de reproducción ( [self.navigationController pushViewController: theListOfSongsViewController animated: SUREWHYNYNOT] ).

Otros consejos

Hasta ahora, estoy viendo un UITabBarController con UINavigationControllers en cada panel con un pequeño código personalizado para devolver el controlador de navegación en la pestaña de destino a la raíz en un interruptor de pestaña.

Apple tiene una gran documentación sobre la combinación de controladores de vista (controladores de navegación dentro de los controladores de pestañas)

http://developer.apple.com/iphone /library/featuredarticles/ViewControllerPGforiPhoneOS/CombiningViewControllers/CombiningViewControllers.html

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