Perché il mio UITabBarController vuoto?
-
22-09-2019 - |
Domanda
Ho creato un UITabBarController in questo modo:
InfoViewController *iVC = [[InfoViewController alloc] init];
self.infoViewController = iVC; // retain property
UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemSearch tag:0];
self.infoViewController.tabBarItem = tabBarItem;
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:myVC];
self.navigationController = nc;
UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemMostRecent tag:1];
self.navigationController.tabBarItem = tabBarItem;
UITabBarController *tbc = [[UITabBarController alloc] init];
NSArray* controllers = [NSArray arrayWithObjects:self.infoViewController, self.navigationController, nil];
self.tabBarController = tbc; // retain property!
self.tabBarController.viewControllers = controllori; [Rilascio da confermare];
Problema: Vedo un nero barra scheda nella parte inferiore e una zona contenuto di bianco. Il primo controller vista dell'array ha un colore di sfondo rosso. Così dovrebbe apparire rosso.
la barra delle schede non mostra elementi, è vuota.
Quale può essere il problema? Io non uso i file pennino ... Nessun avviso, nessun errore, niente registrato a consolare. Basta vuoto Tab Bar.
Soluzione
Non Vi manca:
self.tabBarController.viewControllers = controllers;
EDIT:
Bene a parte questo non vedo nulla nel codice incluso che è quella sbagliata, quindi questo mi porta a pensare che qualcosa deve essere sbagliato. A poche opzioni:
- Sei sicuro punti self.tabBarController a qualsiasi cosa (non è disponibile nil)?
- Sei sicuro che punta alla stessa UITabController che stai vedendo?
-
Sei sicuro che i regolatori si stanno creando vengono creati in modo corretto? Provate la loro visualizzazione a prescindere dalla barra delle linguette con
[self.tabBarController presentModalViewController: IVC animato: YES];
-
È l'UITabController creato da un pennino? Se si mette un NSLog su initWithnibName o awakeFromNib per assicurarsi che sia chiamato prima il codice, e non essere chiamato di nuovo dopo il vostro codice.
Inizia con questi se nessuno mostra alcuna indicazione che qualcosa è sbagliato, mi viene in mente un paio di cose da provare.