web-dev-qa-db-fra.com

Comment ajouter des boutons au contrôleur de navigation visibles après le classement?

J'ai configuré un contrôleur de vue dans Storyboard intégré à un contrôleur de navigation. Dans ce contrôleur de navigation, j'ai coché Afficher les barres de navigation et les barres d'outils et activé une barre de navigation et une barre d'outils dans les barres supérieure et inférieure, respectivement, dans les mesures simulées. Ensuite, "Afficher, par exemple, Push" permet de passer du contrôleur de vue à un autre. Sur les deux contrôleurs de vue, j'ai configuré les métriques simulées de la même manière, de sorte que la barre de navigation et la barre d'outils sont visibles sur les trois contrôleurs.

Le problème est que je peux ajouter des éléments de bouton de barre au premier contrôleur de vue à la fois à la barre de navigation et à la barre d’outils, mais je ne peux pas ajouter d’élément de bouton de barre à la barre de navigation du deuxième contrôleur de vue. Lorsque je dépose un bouton dans la barre de navigation, il est ajouté à la barre d'outils. Et je ne peux pas double-cliquer sur la barre de navigation pour ajouter un titre. Dans l'aperçu, je vois qu'il n'y a pas d'élément de navigation sur le second contrôleur de vue, mais il est présent dans le premier contrôleur de vue.

Je peux probablement ajouter des boutons à la barre de navigation par programmation, mais je souhaite le faire visuellement dans Storyboard. Ma question est la suivante: quel est le problème avec cette configuration ou s'agit-il d'un bogue avec Xcode?

enter image description here

enter image description here

42
Jordan H

Pour XCode 6, la UINavigationItem à partir du 2e contrôleur de vue n'est pas ajoutée automatiquement sur l'objet Contrôleur de vue à l'intérieur du storyboard. Vous devrez faire glisser la UINavigationItem sur la barre de navigation pour cet objet Contrôleur de vue avant d'ajouter UIBarButtonItem par dessus. 

Je ne sais pas pourquoi c'est conçu de cette façon. J'ai découvert cela il y a quelques semaines seulement. 

Xcode 6 UiNavigationItem

86
Ricky

Si vous avez une tonne de contrôleurs de vue et très peu de choses de mise en page automatique personnalisées, vous pouvez désactiver les classes de taille, puis la réactiver ajoutera toutes les barres de navigation manquantes à votre scénarimage. 

enter image description here

enter image description here

Évidemment pas recommandé si vous avez une tonne de trucs de mise en page automatique personnalisés liés.

Si vous n'avez qu'un seul UIViewController qui manque d'une barre de navigation, il suffit de déposer un UINavigationItem dessus.

12
William T.

Si vous utilisez Xcode 7 beta 4/5, essayez de redémarrer Xcode, le problème a été résolu pour moi.

3
jrenouard

C'est très simple. Vous devez simplement utiliser navigaitonItem d’abord en tant que détenteur des boutons, puis vous pouvez ajouter barButtonItems en plus de cela. 

0
emido333

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

0
Hongyang

Pour le second contrôleur de vue dans la hiérarchie, vous pouvez configurer le titre dans les attributs, sans ajouter "d'élément de navigation" enter image description here

0
Daniil Bystrov

Je suis juste tombé sur ce problème et il semble être affecté par la séquence qui montre le contrôleur de vue.

Si le paramètre "Type" en séquence est "Afficher (par exemple, Push)", il est impossible de faire glisser l'élément dans le coin supérieur droit. Toutefois, si vous modifiez explicitement le paramètre "Kind" en "Push", vous pouvez le faire. 

Edit: en fait, je viens de remarquer que "Push" est obsolète. Pas sûr de ce qu'Apple pense ici. Cependant, vous pouvez simplement le remettre à "Afficher" après avoir ajouté le bouton et cela semble fonctionner: D

0
ooxio