Réorganiser l'ordre du contrôleur de la barre d'onglets dans StoryBoard


166

Dans mon application iPhone, j'ai un contrôleur de barre d'onglets avec 4 relations avec 4 contrôleurs de vue de table différents. Existe-t-il un moyen de réorganiser graphiquement l'ordre de la relation dans le StoryBoard? Je ne trouve pas de moyen de le faire et je suis sûr que je dois manquer quelque chose!


Réponses:


255

Dans 4.5, enregistrez le storyboard après avoir ajouté un contrôleur, passez à un autre fichier, puis revenez au storyboard et le glissement des onglets devrait fonctionner à nouveau.


45
Onglet glisser! Ok, je ne savais même pas que nous pouvions faire glisser les onglets. Pas très intuitif car les onglets ne sont pas sélectionnables ...
Pierre de LESPINAY

1
Si vous en avez assez de fouiller dans l'interface utilisateur Xcode avec un commutateur d'onglet / fermer les incantations, regardez simplement la réponse de JannieT. C'est simple et rapide.
Sixto Saez

Peu intuitif mais cela a fonctionné pour moi aussi dans Xcode 7.
zeeple

Si vous ne voyez pas d'éléments à faire glisser, c'est peut-être parce que vous n'avez pas encore défini d'icône. J'ai trouvé qu'il n'apparaissait pas avant d'avoir défini les icônes!
Brian

1
nice :) ne savait même pas qu'il pouvait être traîné
Amr Angry

133

Vous pouvez simplement réorganiser l'ordre en faisant glisser et en déposant les icônes dans le contrôleur de la barre d'onglets


4
Si vous utilisez des onglets personnalisés, vous pouvez toujours faire glisser et déposer pour réorganiser même si la Tab Bar Controllerscène affiche une barre grise, l'élément de barre est toujours là. Ceci est particulièrement discret lorsque tous vos articles de bar sont des articles personnalisés.
Gerald

Le moyen le plus simple et le plus pratique. Fonctionne dans Xcode 7.3.1. Swift 2.2
Mark Barrasso

Fonctionne dans Xcode 9 - bien que les icônes soient invisibles.
Cesare


15

Je n'ai pas pu glisser-déposer avec XCode 4.6 (avec l'une des cobinations mentionnées). Je l' ai résolu d' ouvrir le storybord dans « code source mode », la localisation du tabBarController et réarranger la seque tag.


J'ai un contrôleur de barre d'onglets imbriqué dans un contrôleur de vue fractionnée et, par conséquent, les onglets du contrôleur de barre d'onglets ne sont pas visibles dans le storyboard. La modification du code source du storyboard a fonctionné pour moi. Merci!
Scott Gardner

14

Je sais que l'OP utilise le générateur d'interface Xcode et demande un moyen graphique de le faire, mais pour les développeurs travaillant avec Xamarin iOS Designer, voici une solution de contournement que j'utilise.

Ouvrez le fichier .storyboard dans un éditeur de texte ou à l'aide de Xcode, cliquez avec le bouton droit sur l'élément de storyboard dans le navigateur de projet et sélectionnez Ouvrir en tant que code source. Dans le storyboard XML, localisez le <tabBarController ...>nœud. Ensuite, je réorganise l'ordre des segues dans la <connections>section:

<connections>
    <segue destination="274" kind="relationship" relationship="viewControllers" id="286"/>
    <segue id="943" destination="910" kind="relationship" relationship="viewControllers"/>
    <segue destination="147" kind="relationship" relationship="viewControllers" id="159"/>
</connections>

Recherchez la destination=valeur d'attribut dans le XML pour déterminer sur quel contrôleur de vue l'élément segue pointe.


1
Excellente solution. J'avais un énorme StoryBoard et supprimer et recréer les segues aurait pris du temps
YYamil

10

Faites simplement glisser et déposez les icônes d'onglets dans la barre d'onglets.

c'est-à-dire la barre d'onglets principale qui appartient au contrôleur de la barre d'onglets.

HTH

:: EDIT :: Donc cela ne semble pas fonctionner ... Je suis sûr que c'était le cas auparavant.

Quoi qu'il en soit, le moyen le plus simple que j'ai trouvé est de supprimer les onglets et de les rajouter dans l'ordre dans lequel vous souhaitez qu'ils s'affichent.

J'espère que cela t'aides.


LOL, je viens de tester et je me suis trompé. Désolé. J'ai déjà fait cela. One sec ...
Fogmeister

Ouais, je pense que je me souviens que le glisser-déposer fonctionnait même si je n'en suis pas sûr! Peut-être qu'ils ont changé quelque chose dans Xcode ..
BigLex

Je viens de l'essayer, et cela a bien fonctionné de simplement faire glisser les onglets dans Xcode 4.5
rdelmar

@rdelmar avez-vous commencé votre projet en tant qu'application de barre d'onglets ou avez-vous ajouté un contrôleur de vue de barre d'onglets à une application de vue unique?
BigLex

5
Le glisser-déposer fonctionne, mais il devient têtu si vous avez fait quelque chose dans le storyboard avant d'essayer de glisser-déposer les onglets. Pour résoudre ce problème, sélectionnez n'importe quel autre fichier dans Xcode, puis revenez à votre storyboard. Le glisser-déposer fonctionnera à nouveau. Pas besoin de fermer Xcode ou d'ajouter à nouveau vos contrôleurs.
memmons

9

Comme indiqué dans les commentaires, le glisser-déposer ne fonctionne actuellement pas (Xcode 4.5) après l'ajout d'un contrôleur de navigation. Cependant, le redémarrage de Xcode après l'ajout du contrôleur semble faire fonctionner à nouveau le glisser-déposer.


8

XCODE 10.1: Zoomez sur le story-board. Faites simplement glisser les éléments de l'onglet. (Pas de décalage pas d'autre)


2
Comment as-tu pensé essayer ça? 😃 Génial! 👏
GarySabo

7

Si vous ouvrez le storyboard en tant que «vue du code source», puis fermez-le et ouvrez-le en tant que vue IB, cela semble corriger le bogue.


Cela a fonctionné pour moi (Xcode 8.1), j'ai pu enfin faire glisser pour réorganiser après avoir ouvert le storyboard en vue du code source.
Undrea

7

Pour ajouter à la méthode de glisser-déposer fournie par tout le monde. J'ai posté ceci comme réponse afin que je puisse inclure des images. Essayé sur Xcode 7.3

Si vous utilisez personnalisé tab bar item, vous pouvez toujours faire glisser et déposer pour réorganiser même si la Tab Bar Controllerscène affiche une barre grise, l'élément de barre est toujours là. Ceci est particulièrement discret lorsque tous vos articles de bar sont des articles personnalisés

entrez la description de l'image ici la description


4

J'utilise XCode 5.1 pour le développement d'iOS 7.1 et j'ai trouvé que l'approche suivante fonctionne pour réorganiser les onglets dans un contrôleur de barre d'onglets.

Pour réorganiser les onglets dans un contrôleur de barre d'onglets, supprimez les segues du contrôleur de barre d'onglets vers vos contrôleurs de sous-vue. Ensuite, dessinez à nouveau les segments dans l'ordre dans lequel vous voulez les onglets. Pour "redessiner", je veux dire que vous contrôlez le glisser du contrôleur de la barre d'onglets vers le contrôleur de sous-vue et sélectionnez Relation Segue (en bas de la liste) => contrôleurs de vue.


3
vrai. Une autre façon de faire est de modifier le .storyboard en tant que «code source», de trouver les segues (ce sont une balise <segue>) et de réorganiser leur ordre.
voghDev

3

Vous pouvez vous assurer que l'option Tab Controller Dock dans votre storyboard principal est définie sur "First Responder", cela a résolu le problème pour moi!


J'ai essayé plusieurs de ces idées, car j'ai maintenant ce problème, quel que soit le projet que j'évoque maintenant (nouveau ou ancien). Je n'arrive pas à comprendre ce que KayKay veut dire par "l'option Tab Controller Dock". Quelqu'un a des idées?
LaurelS du

3

J'ai eu le même problème après avoir ajouté un contrôleur de navigation.

Correction: fermez le storyboard (Ctrl + Cmd + W) et faites un dossier de construction propre (Option + Cmd + Shift + K) et un nettoyage régulier (Cmd + Shift + K). Rouvrez le storyboard et vous pourrez à nouveau faire glisser les éléments.


1

La même chose est dans xCode 4.6. Au départ, je suivais un tutoriel sur le début des storyboards sous iOS Au moment de basculer l'élément sur TabBarController, je ne pouvais pas changer l'ordre. J'ai essayé de le sauver - n'a pas fonctionné; cependant, une fois que j'ai fermé le XCode et ouvert à nouveau - il a fonctionné.


1

Contrôle + faites glisser l'élément dans TabBarController dans le storyboard et réorganisez-le à la position souhaitée.


je pense que c'est Option + glisser
GGirotto

0

Je suivais également le didacticiel raywenderlich pour les storyboards et je me suis rendu compte qu'après avoir ajouté le contrôleur d'onglets, je ne pouvais pas réorganiser les onglets en le faisant glisser. Eh bien, apparemment, c'est juste un bogue dans xcode. Alors quittez simplement xcode, redémarrez-le et cette fois, vous pourrez faire glisser les onglets.


0

Pour moi, le glissement ne fonctionnait pas non plus dans XCode 7.3.1. Le redémarrage de XCode n'a pas aidé. Et aucune des solutions mentionnées ci-dessus n'a fonctionné pour moi.

Ce qui m'a aidé: j'ai supprimé la relation avec le deuxième élément et ctrl-glissé de cet élément vers le contrôleur de la barre d'onglets et créé une autre relation. C'était automatiquement à la deuxième place maintenant.


0

Supprimez toutes les séquences de contrôleurs de vue avec la barre d'onglets. Vous avez besoin d'abord de viewcontroller, puis d'un autre viewcontroller se connecter avec la barre d'onglets.

Aucun xcode de redémarrage et aucun fichier de code source clair en modification requis.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.