2009-05-01 15 views
7

Soy un principiante en el desarrollo de iPhone. Quiero construir primero una aplicación que tenga un UIViewController, que tendrá un botón. Ahora al hacer clic en el botón, cargará un controlador UINavigation . Así es como yo estoy acercarse:Cargar un UINavigationController como una subvista desde UIViewController

  1. creé una clase UIViewController, donde tomé un

    -(IBAction) PressMeFunc:(id) sender 
    

    para el botón de ser presionado.

  2. Luego creé un archivo xib UIView. Hice los pasos necesarios en el IB.

  3. Luego en AppDelegate, agregué la instancia de ViewController como una subvista de la ventana.

Hasta esto, está bien.

A continuación, ¿cómo cargo un control de navegación con solo presionar el botón?

Sé cómo construir un proyecto de navigationController desde la aplicación basada en la ventana, pero estoy teniendo dificultades para hacer NavigationController como una subvista de UIView.

Su ayuda es muy apreciada.

Respuesta

8

NavigationController está diseñado para controlar la pantalla cuando se utiliza, por lo que debe decidir cómo gestionar la transición al controlador de navegación desde su ViewController original. Puede hacer esto con presentModalViewController, o eliminando la vista original e intercambiando NavigationController en forma programática.

Aquí está the Apple documentation para configurar un NavigationController programáticamente.

El código va a ser algo como esto (de doc de Apple):

GroupsController *groupsController = [[[GroupsController alloc] initWithNibName:nil bundle:nil] autorelease]; 
UINavigationController *navigationController = 
[[UINavigationController alloc] initWithRootViewController:groupsController]; 

Ahora, una vez que haya creado la NavigationController, y sumó su primera viewcontroller a ella, es necesario hacer la transición a ella . Usted puede hacer eso con CATransitions, o con

[myViewController presentModalViewController: navigationController]; 
+0

Gracias Marque por su respuesta rápida. He descargado el documento de Apple que mencionaste. Lo revisaré e intentaré cargar NavigationController desde UIViewController, aunque no sé qué es presentModalViewController. En realidad, quiero cargar un xml en NavigationController al hacer clic en un botón que está en UIViewController. cordiales, Xcodermi2 – XcoderMi2

+2

Esto es una vergüenza de Apple, hay una gran cantidad de problemas a menos que sólo añadir UINavigationController es a la ventana principal, que podrían tener al menos hizo una nota en la documentación – valexa

5

No debe agregar la vista (incluyendo la navegación) de un UIViewController como subvista a una vista gestionado por otro controlador de vista.

Aquí es una lectura relevante: http://blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/

En su caso, lo que puede hacer es quitar la vista de la viewcontroller desde la ventana, a continuación, añadir la vista del controlador de navegación a la ventana.

[viewController.view removeFromSuperview]; 
[window addSubview:navigationController.view]; 

También puede agregar como un controlador de vista modal como se sugiere aquí, o puede hacer que el primer controlador de vista de un controlador de navegación, y en la pila de ese controlador de navegación, empuje el segundo mando de navegación:

[navigationController pushViewController:secondNavigation animated:NO]; 

Editar: je di cuenta de que estoy respondiendo a una pregunta 09

Edición # 2: Esto puede ser irrelevante para iOS 5 y la cosa contención UIViewController han añadido, todavía no tuvo la oportunidad de comprobar a cabo, pero si estás leyendo esta respuesta, es posible que quieras.

+2

1 para contestar y 10 para responder una pregunta del '09! :) – Jann

Cuestiones relacionadas