Ho un UITabBarController creato in modo programmatico che gestisce 4 sottoclassi di UIViewController. Qualcosa di simile:Come rendere UITabBarController carica pigramente i controller di visualizzazione?
//Create Controller 1
self.terminal = [[[TerminalController alloc] initWithNibName:@"TerminalView" bundle:nil] autorelease];
UINavigationController* navTerminal = [[[UINavigationController alloc] initWithRootViewController:terminal] autorelease];
navTerminal.title = __(@"Terminal");
navTerminal.navigationBar.barStyle = UIBarStyleBlackOpaque;
navTerminal.tabBarItem.image = [UIImage imageNamed:@"tab_terminal.png"];
//Create Controller 2
self.history = [[[HistoryController alloc] initWithNibName:@"HistoryView" bundle:nil] autorelease];
UINavigationController* navHistory = [[[UINavigationController alloc] initWithRootViewController:history] autorelease];
navHistory.title = __(@"History");
navHistory.navigationBar.barStyle = UIBarStyleBlackOpaque;
navHistory.tabBarItem.image = [UIImage imageNamed:@"tab_history.png"];
//Create Controller 3
self.settings = [[[SettingsController alloc] initWithNibName:@"SettingsView" bundle:nil] autorelease];
UINavigationController* navSettings = [[[UINavigationController alloc] initWithRootViewController:settings] autorelease];
navSettings.title = __(@"Settings");
navSettings.navigationBar.barStyle = UIBarStyleBlackOpaque;
navSettings.tabBarItem.image = [UIImage imageNamed:@"tab_settings.png"];
//Create Controller 4
HelpController* help = [[[HelpController alloc] initWithNibName:@"HelpView" bundle:nil] autorelease];
UINavigationController* navHelp = [[[UINavigationController alloc] initWithRootViewController:help] autorelease];
navHelp.title = __(@"Help");
navHelp.navigationBar.barStyle = UIBarStyleBlackOpaque;
navHelp.tabBarItem.image = [UIImage imageNamed:@"tab_help.png"];
//Create Tab Bar an add it's view to window.
self.tabBar = [[[UITabBarController alloc] initWithNibName:nil bundle:nil] autorelease];
tabBar.viewControllers = [[[NSArray alloc] initWithObjects:navTerminal, navHistory, navSettings, navHelp, nil] autorelease];
tabBar.delegate = self;
[window addSubview:tabBar.view];
C'è un modo per dire al UITabBarController per caricare i controller di vista pigramente? ej, quando l'utente fa clic su uno degli elementi della barra delle schede o quando viene chiamato tabBarController setSelectedIndex?
Ho avuto lo stesso problema dell'OP e questo codice ha funzionato perfettamente per me. Grazie!! Sono stato in grado di ridurre il tempo di avvio della mia app di 2 secondi interi. –
In realtà, sto facendo ancora un po 'di lavoro e test con questo e ho avuto un problema. Se presento un controller di visualizzazione modale e poi la congedo da quella modale, quando torno al Tab Controller la sua interfaccia è tutta incasinata. Il mio UITabBar è stato spostato, l'UIView che è la sottoview del controller personalizzato della barra delle schede è stato allungato per riempire una parte maggiore dello schermo. Hai incontrato problemi come questo e se sì, hai trovato una soluzione? –
@Kenny Wyland, non ho avuto problemi di questo tipo, ma non penso di aver mai provato a mostrare una vista modale su di esso. Non riesco a pensare a nessuna ragione per la testa che comunque si comporterebbe male. – zpasternack