Cómo get navController desde AppDelegate.

Me pregunto, cómo get navController desde AppDelegate = [[UIApplication shanetworkingApplication] delegate] en la progtwigción del iPhone. Por ejemplo, en otro viewController donde hacemos reference a AppDelegate.

En la aplicaciónDelegate.h tenemos:

 UINavigationController *navController; 

Y lo siguiente en applicationDelegate.m

 - (void)applicationDidFinishLaunching:(UIApplication *)application { [window addSubview: navController.view]; [window makeKeyAndVisible]; } 

¿Hay alguna forma de get el navController desde mainWindow:

 UIWindow *mainWindow = [appDelegate window]; 

Si este otro UIViewController está contenido en el UINavigationController, simplemente puede llamar:

 UINavigationController *navController = self.navigationController; 

desde el UIViewController.

De lo contrario, puede configurar UINavigationController como una propiedad en AppDelegate.

 // AppDelegate.h @property (nonatomic, strong) UINavigationController *navController; 

Luego accede a appDelegate.navController .

O bien, puede configurar UINavigationController como rootViewController de la window:

 [window setRootViewController:navController]; 

Y llama desde cualquier lugar:

 UINavigationController *navController = window.rootViewController; 

Puede convertir navController en una propiedad.

 @property (nonatomic,strong) UINavigationController *navController; 

Entonces simplemente acceda a él desde su appdelegate

 appDelegate.Controller 

Puede hacer que navController sea ​​una propiedad de su class de delegado. Muestra a continuación:

En applicationDelegate.h

 @property (retain, nonatomic) UINavigationController *navController; 

En applicationDelegate.m

 @synthesize navController; 

entonces puede usar el siguiente código para get navController en otras classs (Suponga que su class de delegado es MyApplicationDelegate ):

 appDelegate = (MyApplicationDelegate*)[[UIApplication shanetworkingApplication] delegate]; UINavigationController *navController = appDeleagte.navController 

No se necesitan properties adicionales, disponibles en casi cualquier lugar de su aplicación usando esta definición de macro:

 #define mainNavController (((AppDelegate*)[[UIApplication shanetworkingApplication] delegate]).navController) 

Cuando coloca la macro en la parte superior de su fuente o en un file de encabezado .h que importa a su fuente, puede comenzar a usar mainNavController como si fuera una variable local.

Por ejemplo:

 [mainNavController pushViewController:myViewController animated:YES]; 

O sin la macro, directamente en el código:

 AppDelegate *appDelegate = (AppDelegate*)[[UIApplication shanetworkingApplication] delegate]; appDelegate.navController; // do something with the navController 

Puede usar este código en casi cualquier lugar, lo cual es útil si trabaja dentro de una class y no puede acceder directamente a ViewController.

Si eres principiante y alumno, el controller de navigation se comparte en toda la aplicación, que solo preparará la "stack" de los controlleres de la vista de la aplicación, para que puedas acceder al control de navigation en cualquier controller de vista (solo si ese controller ha sido presionado) a través de la aplicación . Cuando presiones cualquier controller, se agregará a la "stack" del controller de navigation.

Puede acceder al controller de navigation con el propio object del propio control de visualización.

 [self.navigationController pushViewController:detail animated:YES]; 

Revisar el enlace le dará un conocimiento completo de la anatomía de la navigation.

http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html