Pourquoi mon UITabBarController vide?
-
22-09-2019 - |
Question
J'ai créé un UITabBarController comme ceci:
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 contrôleurs; [Communiqué de confirmer];
Problème: Je vois une barre noire onglet en bas et une zone de contenu blanc. Le premier contrôleur de vue dans la matrice a une couleur d'arrière-plan rouge. Donc, il devrait apparaître en rouge.
La barre d'onglets montre aucun élément, il est vide.
Que peut-être le problème? Je n'utilise des fichiers nib ... Aucun avertissement, aucune erreur, rien connecté à la console. Il suffit de vider Tab Bar.
La solution
ne sont pas vous manque:
self.tabBarController.viewControllers = controllers;
EDIT:
Et bien autre que je ne vois rien dans le code inclus qui est ce mal, donc cela me conduit à penser que quelque chose d'autre doit être faux. A quelques options:
- Êtes-vous sûr des points de self.tabBarController à quoi que ce soit (non nul)?
- Etes-vous sûr qu'il pointe vers la même UITabController vous voyez?
-
Êtes-vous sûr que les contrôleurs que vous créez sont créés correctement? Essayez de les afficher quel que soit le tabBar avec
[self.tabBarController presentModalViewController: IVC animé: OUI];
-
est le UITabController créé à partir d'un NIB? S'il est mis NSLog sur initWithNibName ou awakeFromNib pour vous assurer qu'il est appelé avant votre code, et ne pas être appelé à nouveau après votre code.
Commencez par ceux-ci si aucune aucune indication qui quelque chose ne va pas, je ne peux penser à un peu plus de choses à essayer.