2011-11-15 12 views
7

Tengo un proyecto de iPhone que actualmente no tiene un UINavigationController en él. En cambio, intercambia puntos de vista manejando la jerarquía de vistas yo mismo. Sin embargo, como probablemente sabrá, esta es una mala práctica, así que estoy tratando de descubrir cómo implementar un UINavigationController en mi aplicación actual. Obviamente puedo comenzar mi proyecto y usar una plantilla de Xcode, pero realmente no quiero hacer esto.iPhone SDK - Agregue un UINavigationController Programmatically

Debe haber una manera de hacer esto programáticamente. Pero no puedo averiguar qué código necesita ir en el AppDelegate. ¿Alguien tiene alguna experiencia con esto? Estoy perdido en este momento.

Cheers, Brett

Respuesta

18

Yeap.

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    navController=[[UINavigationController alloc] init]; 
    MyViewController *firstController=[[MyViewController alloc] init]; 
    [navController pushViewController:firstController animated:NO]; 
    [window addSubview: navController.view]; 
} 
- (void) dealloc 
{ 
    ... 
    [navController release]; 
    ... 
} 

Es una pregunta bastante común, echar un vistazo a esto también .... Programmatically add UINavigationController in UIViewController

+0

Creo que deberías poner animated: yes. porque la mayor parte del tiempo. queremos un controlador animado antes de pasar a una nueva vista. Gracias :) – hqt

1

en Xcode 4 en el editor de interfaz, abrir el controlador de vista inicial, y luego seleccionar 'editor> embed en> controlador de navegación'

1

ejemplo de creación y liberación de un controlador de navegación:

UINavigationController *navCon = [[UINavigationController alloc] init]; 
[navCon pushViewController:yourViewController animated:NO]; 
[navCon release]; 
0

que resuelven el mismo problema usando esto. !

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
     navController=[[UINavigationController alloc] init]; 
     MyViewController *firstController=[[MyViewController alloc] init]; 
     self.window.rootViewController = firstController; 
     [self.window addSubview navController.view]; 

} 
7
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; 

// application.applicationIconBadgeNumber = 0; 
navController=[[UINavigationController alloc]initWithRootViewController:self.viewController]; 
self.window.rootViewController = navController; 
[self.window makeKeyAndVisible]; 
1

[I añade control de navegación en mi proyecto de la barra de pestañas y está funcionando perfectamente

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 


UIViewController *viewController1 = [[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil] autorelease]; 

UIViewController *viewController2 = [[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil] autorelease]; 

UIViewController *viewController3 = [[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil] autorelease]; 

self.tabBarController = [[[UITabBarController alloc] init] autorelease]; 


self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3]; 


self.navigationController= [[UINavigationController alloc]initWithRootViewController:self.tabBarController]; 

// self.window.rootViewController = self.tabBarController;

self.window.rootViewController = self.navigationController; 


[self.window makeKeyAndVisible]; 


return YES; 
Cuestiones relacionadas