2011-09-13 3 views
5

Questo è stato abbastanza facile in Xcode 3. Ma sono totalmente perso in Xcode 4. * Sembra che IB non sia usato affatto. E tutto il codice TabBarController è in codice.No mainwindow.xib in Xcode 4 Confuso come avere il mio TabBarController usa un NavigationController

Domanda: Come si aggiunge un NavigationBarController al codice predefinito generato da Xcode quando si utilizza un modello 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; 

} 

risposta

6

Come qualcuno ha menzionato è possibile aggiungere un file xib e configurare l'app per usarlo. Ecco la versione di codice nel caso in cui si decide di seguire questa strada è sempre meglio sapere in entrambi i casi

- (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; 
} 

Questo è scritto nel browser ma dovrebbe funzionare.

+0

Ciao, WOW entrambe le risposte sono corrette. Sto andando con la rotta del codice per ora. –

6

È possibile aggiungere un file MainWindow.xib manualmente (Nuovo File -> Interfaccia Documento vuoto builder) e poi nelle vostre applicazioni Info.plist è possibile aggiungere una chiave denominata "Main file nib nome di base" e impostare è valore a "MainWindow".

Nel delegato dell'app, impostare la finestra e UINavigationController come IBOutlets e rimuovere il codice che li genera. Quindi, nel file MainWindow.xib, aggiungi un'istanza delegata dell'app, UINavigationController e una finestra. Collegare UINavigationController e Window alle prese del delegato.