web-dev-qa-db-fra.com

xcode/storyboard: impossible de faire glisser le bouton de la barre vers la barre d'outils en haut

J'ai un contrôleur de vue qui est la vue détaillée d'une table. Lorsque vous cliquez sur la ligne du tableau, vous passez à la vue détaillée. La vue détaillée est intégrée à un contrôleur de navigation, de sorte qu’un bouton en haut à gauche de la barre de navigation vous renvoie à la table. Jusqu'ici tout va bien.

Je souhaite maintenant ajouter un bouton de modification à droite de la barre de navigation pour vous permettre de modifier la vue détaillée. Mon plan est que cela va ajouter un autre contrôleur de vue modalement qui vous permet de modifier les détails de l'élément. Trucs standard.

Cependant, lorsque j'essaie de faire glisser un élément de bouton de la liste d'objets vers la barre de navigation, cela ne prend pas. Au lieu de cela, lorsque je lâche le bouton de la souris, il laisse le bouton de la barre de contrôle de la barre d’onglet en bas. (Mon schéma de navigation comprend différents onglets et pour chaque onglet, un tableau, une vue détaillée, etc.)

Toute personne rencontrée auparavant et peut suggérer ce que je fais de mal ou une solution de contournement pour ajouter l'élément de bouton de barre à droite de l'écran de navigation. Dois-je l'ajouter dans le code?

Merci pour toutes les suggestions.

86
user1904273

J'ai le même problème avec Xcode6 et j'ai remarqué que UINavigationItem est ajouté automatiquement pour le premier ViewController que vous intégrez à NavigationController, mais que pour les ViewControllers suivants, vous devrez l'ajouter manuellement comme suit:

  1. Dans la bibliothèque d'objets, recherchez élément de navigation, puis faites-le glisser vers votre 2nd ViewController dans le story-board.
  2. Dans la bibliothèque d'objets, recherchez Bar Button Item puis faites-y glisser l'élément de navigation que vous avez créé à l'étape précédente.

Maintenant, vous aurez vos boutons de barre collés au sommet de votre scène.

Update La solution fonctionne toujours avec XCode 7 mais je voulais ajouter une photo plus descriptive. Juste au cas où quelqu'un ne connait pas vraiment les noms standard ou techniques mentionnés ci-dessus. Remarquez les flèches rouges à droite, elles font référence à l’étape 1, étape 2 susmentionnée. Notez également la hiérarchie des vues sur le rectangle rouge de gauche.  enter image description here

148
Wael Showair

Nasty Truc:

  1. Changez votre transition en Push. 
  2. Définissez le contenu dont vous avez besoin
  3. Reculer pour montrer

Ensuite, le contenu sera éditable et vous aurez un style non obsolète pour segue. 

63
Baxter Lopez

Il manque probablement un Navigation Item au contrôleur de vue de votre storyboard. Vous pouvez en faire glisser un depuis la bibliothèque d'objets et le déposer sur votre contrôleur de vue.

Vous pourrez alors faire glisser des éléments de bouton de la barre sur le côté gauche ou droit de la barre de navigation.

29
user4151918

je l'ai résolu. faites glisser l'élément de navigation vers votre vue de détail. que vous pouvez faire glisser dans l'élément de bouton de barre.

22
Jamal N. Ahmad

Au lieu de faire glisser un UINavigationController dans le story-board et d’essayer d’ajouter UIBarButtonItems à cette question, j’ai traîné dans un UITableViewController, puis je suis allé à 

Editeur-> Intégrer dans> Contrôleur de navigation

Ce qui a donné le même résultat qu'auparavant, sauf que je pouvais ajouter UIBarButtonItems aux deux côtés de la barre de navigation sans aucun problème.

8
tallen11

En fait, son problème de code xcode . Une astuce qui a fonctionné pour moi est d’ajouter le bouton barre dans la structure de fichier de visualisation sur la gauche.Instaed ajoutant directement sur la vue . J'espère que cela vous aidera. :)

5
Chetan Kumar

Je pense que c'est un bug. J'ai eu le même problème. J'ai résolu ce problème en désactivant les classes de taille, puis en l'activant. 

Vous pouvez désactiver et activer les classes de taille dans la documentation d'Inter Builder.

 enter image description here

5
Hongyang

J'ai aussi eu ce problème, fermer et rouvrir le projet a fonctionné pour moi.

4
Hsm

Je pense que c'est un bug de Xcode. Dans Xcode 8, remplacez la segue du storyboard situé avant le contrôleur de vue par la barre d'onglets par toutes ses options (show detail, present...). Puis revenons à show. Essayez de faire glisser les éléments de bouton de la barre et de modifier la mosaïque. Ça marche pour moi!

3
user2174595

Je crois que c'est une bizarrerie XCode. J'ai eu le même problème. Je devais réinitialiser Xcode et déplacer l'emplacement des éléments sur le storyboard pour enfin le faire disparaître. Ça marche maintenant.

3
rotarycuff

Même problème. J'avais un contrôleur de vue de table dans un contrôleur de navigation et de nombreux ViewControllers plus loin dans la chaîne. Un «élément de navigation» était créé automatiquement pour le contrôleur de vue racine FIRST et je pouvais ajouter un «élément de bouton à barres» à celui-ci sans problème. Via le Storyboard, faites glisser et déposez. Mais c'est tout. Sur le contrôleur de vue de table et les contrôleurs de vue suivants, même s’ils se trouvaient dans le contrôleur de navigation initial (le bouton de retour généré automatiquement est apparu), le story-board ne me permettait jamais d’ajouter un élément de bouton à barres.

La solution de Wael Showair n'a pas fonctionné pour moi. Bouton à barres Les éléments n'apparaissent pas. 

Je l'ai résolu par programme à la fin (Swift 2.0):

var testButton = UIBarButtonItem(title: "Test Button", style .Plain, target: self, action: "testButtonMethod")
self.tabBarController?.navigationItem.rightBarButtonItem = testButton

Aucun élément de navigation supplémentaire ou élément de bouton de barre requis.

1
Elliott Davies

J'avais le même problème dans xcode 8. Je devais simplement fermer xcode et rouvrir le projet, puis je pouvais ajouter le bouton de barre au contrôleur racine sans problèmes.

1
SGM

Avez-vous essayé de "nettoyer" votre projet? Je sais que cela m'aide parfois (allez simplement dans "Produit"> "Nettoyer"). Ou bien, supprimez la barre de navigation et essayez à nouveau.

Si vous pensez que c'est une erreur de programmation, n'hésitez pas à transmettre votre code. Je serais heureux d'aider de toutes les façons possibles. :)

1
JJ Yu

Pour XCode 8

Il y a beaucoup de réponses ici. J'en ai essayé quelques-unes mais je ne pouvais pas le faire .. donc j'ai trouvé ma solution, il suffit de sélectionner votre section ViewController, allez Attributes Inspector et de changer la barre supérieure en barre de navigation opaque et Boom. Vous verrez la barre de navigation sur votre storyboard. Vous pouvez changer le titre ou ajouter un élément. Si vous ne voulez pas garder Opaque, vous pouvez changer le style en Inferred

 enter image description here

1
emresancaktar

Vous devez réinitialiser xCode IDE. Fermez xCode et écrivez les codes ci-dessous au terminal ... Cela fonctionnera.

rm -rf $HOME/Library/Application Support/Developer/Shared/Xcode
rm -rf $HOME/Library/Preferences/com.Apple.dt.Xcode.*
rm -rf $HOME/Library/Saved\ Application\ State/com.Apple.dt.Xcode.savedState
rm -rf $HOME/Library/Developer/Xcode
1
Yusuf Kıldan

J'étais trop confronté au même problème. J'ai pu résoudre ce problème en sélectionnant l'option du contrôleur de vue racine, puis dans la matrice simulée, a changé l'option Barre supérieure en Barre de navigation opaque et j'ai pu ajouter l'élément au-dessus de la barre de navigation.Espoir cette réponse aidera quelqu'un.

1
reetu

Dans Xcode 10, je viens de changer le type de séquence allant à ce nouveau contrôleur de vue en "Push (obsolète)", a ajouté l'élément de navigation tel qu'il était autorisé après avoir effectué ce changement. Si vous revenez au type de séquence initialement souhaité, l'élément de navigation reste.

0
Mark Lyons

Au lieu de faire glisser le "bouton de barre" vers le "contrôleur de navigation", faites-le glisser vers le "contrôleur de vue détaillée". Lorsque vous intégrez la vue détaillée dans la "vue de navigation", un "élément de navigation" est ajouté au "contrôleur de vue détaillée". Si vous faites glisser le "bouton de barre" sur le côté droit de l'élément de navigation, l'élément sera inclus sous les "boutons de barre de droite"

0
Nancy

comme Mark Lyons l'a dit, j'ai utilisé la même solution.

  • push segue en premier
  • ajouté l'article de barre
  • revenir en arrière pour montrer segue
  • terminé
0
HassanBro