web-dev-qa-db-fra.com

Avertissement "Style brut non pris en charge dans un élément de navigation" avec mon élément de bouton de barre personnalisé

Je fais glisser un bouton rectangle rond à la position de l'élément de bouton de barre de droite et définit une image sur le bouton rectangle rond. Tout fonctionne bien, à l'exception de l'avertissement "Style brut non pris en charge dans un élément de navigation". Même si je sélectionne le style de l'élément de bouton de barre sur "Bordé", l'avertissement sera toujours là. Quel est le problème avec Xcode 4.2? Merci d'avance!

Ps. J'ai personnalisé de nombreux éléments de bouton de barre avec un bouton rectangulaire rond, parfois Xcode 4.2 affiche un seul avertissement sur un élément de bouton de barre, parfois affiche des avertissements sur tous les éléments de bouton de barre.

81
lu yuan

J'ai pu supprimer ces erreurs en modifiant manuellement les fichiers du storyboard et en trouvant l'entrée de style = "ordinaire" incriminée sur les éléments du bouton de barre dans le <navigationItem> élément.

Changé de:

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

À:

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

Cela a effacé les avertissements ... bien ou mal.

Cela peut être un formidable hack et le plus gros problème est que je n'ai pas causé la cause ni supprimé les éléments du bouton de barre invisible du document global. C'était après avoir parcouru tous les éléments un par un et découvert que certaines barres de navigation étaient vides (sans enfants) et se sont probablement produites avec la grande quantité d'héritage de copier-coller (cmd + c | v) et sans utiliser de doublon (cmd + d) pour construire l'interface. Bien que la cause d'origine n'ait pas été causée par la racine, le symptôme était que les éléments de la barre n'apparaissaient pas dans le document "vue d'ensemble" à corriger. Le comportement d'Interface Builder me semble parfois nuancé et un conteneur vide où il devrait y avoir quelque chose dans une vue d'ensemble est une odeur. Eh bien, c'est pour moi maintenant. Parfois, la suppression du nœud incriminé et la reconstruction corrigent 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é lorsque votre storyboard est complètement arrosé et ne compilera pas. Tout ce que vous obtiendrez, c'est un "Je vous l'ai dit!" J'ai appris à la dure à plusieurs reprises, mais le contrôle minutieux des sources m'a évité un mal de tête.

EDIT: mettre des crochets dans des blocs de code

123
Hunter-Orionnoir

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

Dans le navigateur de fichiers, cliquez avec le bouton droit sur le storyboard et sélectionnez Open As Source Code

enter image description here

Dans la page de code source, recherchez "plain" et trouvez celui 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 sur cette balise ci-dessus le navigationItem

enter image description here

Voici le nom de votre scène, vous pouvez maintenant modifier à nouveau votre vue Storyboard en Interface Builder - Storyboard avec la méthode du clic droit décrit ci-dessus, puis sélectionnez la scène dans le menu scène et l'élément de barre à l'intérieur.

enter image description here

Accédez à l'inspecteur des attributs et changez le style de Plain en Bordered

enter image description here

27
dstudeba

J'ai arrêté l'avertissement concernant le style brut en fouillant dans le plan du document. Cela montrait mon élément de navigation, et dans ces 2 éléments de bouton de barre, et dans chacun d'eux un bouton. Le paramètre incriminé était sur l'élément de bouton de barre. Dans son inspecteur d'attributs, j'ai changé Style de Plain en Done, et l'avertissement a disparu. Remarque: j'utilise XCode 5.

13
MarkAurelius

Si vous utilisez le storyboard, cliquez sur l'avertissement et cela devrait vous amener à l'élément de navigation incriminé (j'en avais deux pour le problème, l'un m'a emmené là l'autre pas) - changez le style et nettoyez le projet.

Bar Button Style set to plain

7
Recycled Steel

backBarButtonItemleftBarButtonItem et rightBarButtonItem sont UINavigationItem objets. Il n'y a pas de propriété style dans UINavigationItem, c'est donc la raison de l'avertissement. Vous devez définir les barButtons par programmation:

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" de référence UIBarButtonItem .

5
Mat

Dans mon cas, c'était une image d'une flèche arrière, qui était réglée sur "Normal".

Le message d'erreur apparaît pour faire référence à tous les éléments de la barre de navigation.

1
user462990

Dans la barre de navigation, essayez d'utiliser UIBarButtonItem au lieu du bouton Rect rectangle et définissez une image pour celui-ci.

1
iOSDev

Une fois que vous êtes sûr d'avoir tous vos boutons de barre dans le storyboard définis sur tout sauf ordinaire, assurez-vous de faire un commit git et de supprimer les données dérivées. J'ai passé une éternité à essayer de comprendre pourquoi le problème ne se résolvait pas et la suppression du dossier de données dérivées l'a corrigé pour moi.

0
Sethmr