2010-05-15 15 views
6

Situación:
Tengo un proyecto de Xcode basado en la plantilla "Aplicación basada en la navegación". Eso significa que tengo un UINavigationController ÚNICO que administra un UIViewController.¿Cómo cambio entre los controladores de navegación?

Lo que queremos hacer:
Lo que quiero hacer es añadir una UINavigationController más para mi proyecto - y ser capaz de alternar entre ellos. (quiero hacer esto para hacer espacio para algo de contenido relacionado separada de modo que no tiene un botón de retroceso que apunta de nuevo al controlador de vista raíz.)

Pregunta:
¿Cómo agrego una más UINavigationController a mi proyecto y cambiar entre los dos UINavigationControllers?

+0

¿Por qué no ocultar el botón Atrás? – drawnonward

+0

¿Cómo cambias entre las dos áreas? ¿Un UITabBarController? – Rudiger

Respuesta

9

La manera más común y natural del sistema operativo del iPhone es hacer una aplicación UITabBarController. La plantilla de Xcode Aplicación Barra de pestañas lo guiará en la dirección correcta sobre cómo usarlo.

Pero ...

Si no les gusta tener una barra de pestañas en su aplicación, y el deseo de cambiar entre diferentes UINavigationController instancias (o cualquier UIViewController para el caso), se puede hacer algo como esto .

Primero necesita crear sus instancias UINavigationController en un lugar apropiado (por ejemplo, un nuevo controlador de vista, o en su delegado de aplicación, si desea tomar el camino más fácil). Luego puede cambiar entre controladores simplemente cambiando la vista del Controlador de Navegación que debería estar visible.

Ejemplo en el Delegado de aplicaciones "firstNavigationController" y "secondNavigationController" son UINavigationController variables de instancia:

- (void)showFirstNavigationController { 
    [secondNavigationController.view removeFromSuperview]; 
    [self.window addSubview:firstNavigationController.view]; 
} 

Esto simplemente mostrará el primero en lugar del segundo regulador de la navegación. Tenga en cuenta que este ejemplo es muy simple. No tomé en consideración que debe manejar correctamente los métodos viewWillAppear:, viewDidAppear:, etc.

+0

Gracias, y para obtener crédito adicional: ¿Cómo puedo hacer que la transición sea suave (o animada)? – RexOnRoids

+0

Puede lograrlo fácilmente con algunas animaciones básicas 'UIView'. Antes de la primera fila en mi método, agregue: '[UIView beginAnimations: @" myFlip "context: NULL];' y '[UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft forView: self.view cache: YES];' Y en la parte inferior: '[ UIView commitAnimations]; ' – alleus

+0

¿cómo hacer esto rápidamente? – DeyaEldeen

Cuestiones relacionadas