94 votes

Avertissement "Plain Style unsupported in a Navigation Item" avec mon élément bouton de barre personnalisé

Je fais glisser un bouton rectangulaire rond à la position de l'élément de bouton de la barre de droite, et je définis une image pour le bouton rectangulaire rond. Tout fonctionne bien, sauf l'avertissement "Plain Style unsupported in a Navigation Item". Même si je sélectionne le style de l'élément de bouton de barre en "Bordé", l'avertissement est toujours là. Quel est le problème avec Xcode 4.2 ? Merci d'avance !

Ps. J'ai personnalisé de nombreux éléments de boutons-barres avec des boutons rectangulaires. Parfois, Xcode 4.2 n'affiche qu'un seul avertissement sur un élément de bouton-barres, parfois il affiche des avertissements sur tous les éléments de boutons-barres.

141voto

Hunter-Orionnoir Points 1839

J'ai pu supprimer ces erreurs en éditant manuellement les fichiers du storyboard et en trouvant l'entrée fautive style="plain" sur les éléments Bar Button dans le fichier <navigationItem> élément.

Changé de :

<barButtonItem key="rightBarButtonItem" style="plain" id="juB-DL-F9i">

A :

<barButtonItem key="rightBarButtonItem" id="juB-DL-F9i">

Cela a effacé les avertissements... à tort ou à raison.

Il s'agit peut-être d'un piratage stupéfiant et le plus gros problème est que je n'ai pas créé de racine et que je n'ai pas supprimé les boutons de la barre invisible du document global. Je l'ai fait après avoir passé en revue tous les éléments un par un et découvert que certaines barres de navigation étaient vides (sans enfants), ce qui est probablement dû à la grande quantité de copier-coller (cmd+c|v) héritée et à l'absence de duplication (cmd+d) pour construire l'interface. Bien que la cause source ne soit pas Root, le symptôme était que les éléments de la barre ne s'affichaient pas dans la "vue outline" du document à corriger. Le comportement d'Interface Builder me semble parfois nuancé et un conteneur vide là où il devrait y avoir quelque chose dans une vue de contour est une odeur. C'est le cas pour moi maintenant. Parfois, le fait de supprimer le nœud en question et de le reconstruire permet de résoudre les problèmes les plus étranges.

AVERTISSEMENT : sauvegardez vos storyboards avant d'essayer ceci... le contrôle de version est votre ami... Je ne prends aucune responsabilité quand votre storyboard est complètement foutu et ne compile pas. Tout ce que vous obtiendrez, c'est un "je vous l'avais dit !". J'ai appris à la dure plusieurs fois, mais un contrôle de source diligent m'a épargné un mal de tête.

EDIT : mettre des parenthèses dans les blocs de code

34voto

dstudeba Points 6062

Si vous cliquez sur l'avertissement et que vous n'accédez pas à l'élément de navigation incriminé, procédez comme suit. (représentation visuelle de la réponse de Hunter à laquelle a été ajoutée une méthode plus sûre issue des commentaires)

Dans le navigateur de fichiers, cliquez à droite sur le storyboard et sélectionnez Open As Source Code

enter image description here

Dans la page de code source, recherchez le terme "plain", et trouvez celui qui est attaché à un élément de navigation.

enter image description here

Pour obtenir le nom de la vue, mettez "scène" dans la barre de recherche et cliquez sur la flèche de recherche arrière pour rechercher la première instance de cette balise. au-dessus de el navigationItem

enter image description here

Voici le nom de votre scène, vous pouvez maintenant changer la vue de votre Storyboard de nouveau en Interface Builder - Storyboard avec la méthode du clic droit décrite ci-dessus, puis allez sélectionner la scène dans le menu scène, et l'élément de la barre qui s'y trouve.

enter image description here

Allez dans l'inspecteur d'attributs et changez le style de Plain a Bordered

enter image description here

13voto

MarkAurelius Points 497

J'ai arrêté l'avertissement sur le Plain Style en fouillant dans le Document Outline. Celui-ci montrait mon élément de navigation et, à l'intérieur de celui-ci, deux éléments de bouton de barre et, à l'intérieur de chacun d'eux, un bouton. Le paramètre incriminé se trouvait sur l'élément Bouton de barre. Dans son inspecteur d'attributs, j'ai changé le style de Plain à Done, et l'avertissement a disparu. Remarque : j'utilise XCode 5.

8voto

Recycled Steel Points 594

Si vous utilisez storyboard, cliquez sur l'avertissement et il devrait vous amener à l'élément de navigation incriminé (j'en ai eu deux pour ce problème, l'un m'a amené là, l'autre non) - changez le style et nettoyez le projet.

Bar Button Style set to plain

6voto

Mat Points 5385

backBarButtonItem leftBarButtonItem y rightBarButtonItem son UINavigationItem objets. Il n'y a pas de style la propriété dans UINavigationItem C'est donc la raison de l'avertissement. Vous devez définir les barButtons de manière programmatique :

iOS 4 :  

UIButton *bt=[UIButton buttonWithType:UIButtonTypeRoundedRect];
 [bt setFrame:YourFrame];
 //[bt setImage:[UIImage imageNamed:@"backBT"] forState:UIControlStateNormal];
 [bt addTarget:self action:@selector(popViewController:) forControlEvents:UIControlEventTouchUpInside];
 UIBarButtonItem *leftButton=[[UIBarButtonItem alloc] initWithCustomView:bt];
 self.navigationItem.leftBarButtonItem=leftButton;

Pour iOS 5+ :

Lisez la section "Personnalisation de l'apparence" du site Web de la Commission européenne. Référence à UIBarButtonItem .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X