web-dev-qa-db-fra.com

La barre d'onglets n'affiche pas les icônes?

J'ai lu un tas de questions connexes, j'ai essayé ce qu'elles ont dit, rien ne fonctionne vraiment. Pas certain de pourquoi. Donc, j'ai 3 UIStoryboards différents. Le premier est le Storyboard Auth qui gère la connexion/l'inscription et il y a une référence de storyboard au deuxième storyboard - Storyboard de la barre d'onglets. Ce storyboard contient 5 autres références de storyboard qui chargeraient ses contrôleurs de vue séparés.

Mon problème est que les icônes ne s'affichent pas une fois que l'utilisateur est connecté. J'ai configuré une couleur personnalisée du premier contrôleur de vue dans le UITabViewController juste pour m'assurer qu'il se charge. Cela fait.

J'ai essayé de définir toutes les images/icônes pour les rendre en "Original", cela n'a pas fonctionné. J'ai défini une image système, juste pour voir si c'est le problème, elles ne sont pas affichées. Il convient également de mentionner que les icônes sont affichées dans le storyboard, mais lorsqu'elles sont compilées, elles ne sont visibles nulle part dans le simulateur.

Qu'est-ce que je fais mal?

enter image description here

PS: J'ai changé la couleur de la teinte de la barre d'onglets, juste pour la tester, et ça marche. Donc, le problème n'est pas avec ça ...

16
Bold Lion

Problème avec les références du storyboard et les icônes de barre d'onglets manquantes

Si vous avez des références de storyboard attachées à votre contrôleur de barre d'onglets, vous remarquerez que la référence de storyboard a en fait un UITabBarItem dessus:

fake UITabBarItem

Ne définissez pas les propriétés de ce "faux" UITabBarItem!

Vos paramètres ne feront rien du tout lorsque vous exécutez l'application. Les valeurs que vous fournissez affectent UNIQUEMENT ce que vous voyez dans Interface Builder, pas votre application lorsque vous l'exécutez.

Solution

Ce que vous devez faire est d'accéder au contrôleur de vue ACTUEL vers lequel pointe votre référence de storyboard. Ce contrôleur de vue aura également un UITabBarItem dessus. Il s'agit du "vrai" UITabBarItem. Définissez vos propriétés (icône, titre, etc.) et vous les verrez s'afficher lorsque vous exécutez l'application.

actual view controller

21
Mark Moeykens

J'ai joint une image décrivant les connexions:

  1. Connectez le contrôleur TabBar à vos cinq contrôleurs de vue

  2. Pour chaque contrôleur de vue, sélectionnez n'importe quel contrôleur de vue -> Aller à l'éditeur dans les options Xcode en haut -> Intégrer dans -> Contrôleur de navigation

  3. Sélectionnez la barre inférieure dans le contrôleur de navigation -> ouvrez l'inspecteur d'attributs dans les utilitaires -> fournissez votre titre et votre image comme mis en évidence dans l'image

enter image description here

Navigation de la connexion/inscription à l'écran TabBar: Fournissez l'ID du storyboard à TabBarController, par exemple. "TabBarController" et créez l'instance TabBarController à l'aide de l'ID Storyboard du Storyboard correspondant.

Swift 3

func navigateToTabBar() {
    let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
    let nextViewController = storyBoard.instantiateViewController(withIdentifier: "TabBarController") as UIViewController
    self.present(nextViewController, animated:true, completion:nil)
}
10
Rahul Kumar