2011-09-13 10 views
5

Esto fue bastante fácil en Xcode 3. Pero estoy totalmente perdido en Xcode 4. * Parece que IB no se usa en absoluto. Y todo el código de TabBarController está en el código.No mainwindow.xib en Xcode 4 Confundido cómo hacer que mi TabBarController use NavigationController

Pregunta: ¿Cómo agrego un NavigationBarController al código predeterminado que Xcode genera cuando se utiliza una plantilla TabBarController?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
// Override point for customization after application launch. 

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

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

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

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

self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil]; 

self.window.rootViewController = self.tabBarController; 

[self.window makeKeyAndVisible]; 

return YES; 

} 

Respuesta

6

Como alguien ha mencionado, puede agregar un archivo xib y configurar la aplicación para usarlo. Aquí está la versión de código en caso de que decida seguir este camino, siempre es mejor saber de cualquier manera

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    UIViewController *viewController1 = [[FirstViewController alloc] init]; 
    UINavigationController *navigationController1 = [[UINavigationController alloc] initWithRootViewController:viewController1]; 
    [viewController1 release]; viewController1 = nil; 

    UIViewController *viewController2 = [[SecondViewController alloc] init]; 
    UINavigationController *navigationController2 = [[UINavigationController alloc] initWithRootViewController:viewController2]; 
    [viewController2 release]; viewController2 = nil; 

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

    NSArray *viewController = [[NSArray alloc] initWithObjects:navigationController1, navigationController2, nil]; 
    [navigationController1 release]; navigationController1 = nil; 
    [navigationController2 release]; navigationController2 = nil; 

    self.tabBarController.viewControllers = viewControllers; 
    [viewControllers release]; viewControllers = nil; 

    self.window.rootViewController = self.tabBarController; 

    [self.window makeKeyAndVisible]; 

    return YES; 
} 

Esto está escrito en el navegador pero debería funcionar.

+0

Hola, GUAU, ambas respuestas están correctas. Voy con la ruta del código por ahora. –

6

Puede añadir un archivo MainWindow.xib manualmente (New File -> interfaz de vacío de generador de documentos) y luego en sus aplicaciones info.plist puede agregar una clave llamada "archivo semilla nombre base principal" y establecer su valor a "MainWindow".

En su delegado de aplicación, configure la ventana y el UINavigationController como IBOutlets y elimine el código que los genera. Luego, en su archivo MainWindow.xib, agregue una instancia del delegado de la aplicación, UINavigationController y una ventana. Conecte el UINavigationController y la ventana a las salidas del delegado.

Cuestiones relacionadas