web-dev-qa-db-fra.com

Avertissement Xcode Storyboard: Les éléments de référencement par contrainte sont désactivés dans la configuration actuelle. Désactiver cette contrainte dans la configuration actuelle

Cet avertissement se produit dans Xcode 6.1. Quelqu'un a-t-il une idée de ce que cet avertissement signifie et de ce qui va se passer? Merci beaucoup!

Ci-dessous, une capture d'écran avec les avertissements ouverts dans le code source "

enter image description here

Comment trouver quelle contrainte cause l'avertissement? Xcode ne vous dit pas quelle contrainte est le problème.

 enter image description here

138
Zhihao Yang

Cet avertissement peut être ennuyeux et se produit à partir de Xcode 6.1.1. Le problème principal est que vous ne pouvez pas trouver facilement la contrainte référencée en cliquant sur l’avertissement. Je suppose que c'est un bogue et que ça va être corrigé tôt ou tard.

Cependant, en attendant, vous pouvez utiliser cette petite solution de contournement:

Étape 1: Détecter un avertissement ennuyeux ????

Annoying warning

Étape 2: clic droit/Ctrl-clic sur l'avertissement, sélectionnez Reveal in Log ????

enter image description here

Étape 3: Admirez la beauté de l'extrait de journal suivant:

... snip ...
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Dlb-cb-nWC: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:6Ze-mO-v5N: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:9av-xw-u1o: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:RPt-Uf-vaZ: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:Rnc-4M-7jV: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:epJ-D9-KEF: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
/Devel/MyCrippledAppNG/MyCrippledApp/Main_iPad.storyboard:4HC-Gu-01w: warning: Constraint referencing items turned off in current configuration. Turn off this constraint in the current configuration.
... snip ...

Hmmm ... Qu'est-ce que c'est ...?

interesting

Étape 4: Jetons cela dans la barre de recherche du projet ... ????

search

???? Oui, vous avez bien deviné. Cliquez dessus.

Étape 5: ???? OMG! Profitez de quelques minutes supplémentaires de productivité jusqu'à ce que Apple corrige ce bug ennuyeux. ????

wheeee


Pour 2016 ...

  • Si vous ne pouvez pas l'obtenir avec 'Révéler dans le journal', affichez le navigateur de rapports. (C'est l'onglet le plus à droite de la colonne la plus à gauche.) Consultez les résultats de la construction. Cela montrera le journal de construction, y compris l'ID de contrainte. courtoisie construction réussie

 enter image description here

 enter image description here

  • Notez que pour Xcode of 5/2016, vous devez quitter et restart Xcode pour effacer cet avertissement dans certains cas.

  • Notez que de manière confuse, la même erreur peut être causée par un problème sans lien (il semble s'agir d'un bogue Apple ou d'une mauvaise utilisation du langage d'erreur): si vous avez des éléments IBInspectable et que vous obtenez les renommer dans vos fichiers Swift. Xcode ne pas supprime pour vous l'ancien nom UserDefinedRuntimeAttributes. Cliquez simplement sur "Inspecteur d'identité" (élément 3 sur le panneau de droite) et supprimez les éléments non récupérés.

Pour 2017 ...

  • Encore une autre cause commune, et même plus simple, du problème. Si vous rencontrez un-Install un élément: Au moment de l'écriture, Xcode ne sait tout simplement pas désinstaller également automatiquement les contraintes qui mènent à cet élément. Tout simplement, examinez tous les éléments non installés et, pour toutes leurs contraintes, marquez-les simplement comme non installés. (Ou simplement, peut-être simplement supprimer temporairement l'élément non installé pour voir si c'est le problème.)
420
BastiBen

Ce message est déclenché lorsque vous avez désactivé une vue dans votre storyboard mais que vous n'avez pas désactivé les contraintes basées sur cette vue. 

Par exemple, vous avez désactivé un bouton, mais vous avez toujours des contraintes liées à ce bouton. Il peut s'agir d'une contrainte intrinsèque telle que la hauteur ou la largeur, ou d'une contrainte relative telle que la distance par rapport à une autre vue. 

Vous devez désactiver chacune des contraintes faisant référence à la vue, et vous devez le faire manuellement. Xcode est trop conservateur ici et ne le fera pas pour vous. 

37
KPM

Cette solution fonctionne pour moi.

Comme j'ai copié plusieurs éléments du projet développé dans Xcode 5 dans Xcode 6 et que le storyboard de Xcode 6 prend en charge plusieurs dispositions, pour chaque contrainte, je dois l'installer dans la configuration actuelle.

Par exemple, j'utilise "Compact Width | Regular Height" pour la contrainte que je dois définir comme ci-dessous:

enter image description here

Après avoir vérifié et défini toutes les centaines de contraintes de mes projets, les nettoyer et les construire, les avertissements disparaissent enfin.

14
Zhihao Yang

Je voulais juste ajouter à mon cas comment cette erreur s'est produite pour moi: dans mon cas, je voulais supprimer un champ de texte avec "Cmd + Backspace". Je l'ai fait directement dans l'arborescence de Scène-Builder:

 enter image description here

Vous pouvez voir que le champ snooze est grisé.

Donc, cela a été facilement découvert pour moi. Vous pouvez simplement supprimer le champ en sélectionnant:

Édition-Supprimer du menu

Étonnamment - cela supprime vraiment le champ (y compris les contraintes) . Peut-être que cela aide quelqu'un à trouver facilement la cause de cet avertissement gênant ... 

8
Dirk

Pour moi, cela se produit si je donne à un objet une nouvelle contrainte d'objet (pas de vue) avec l'option "Contrainte aux marges" non cochée. Problème résolu avec cocher l'option (qui est par défaut).

1
Ryde

Cela peut être dû au fait que vous avez sélectionné une classe de taille non compatible avec vos contraintes (wAny hAny est un cas courant). Dans ce cas, il suffit de sélectionner une classe de taille différente dans Interface Builder et vous avez terminé.

1
Jano

Ce qui a fonctionné pour moi (et je ne sais pas pourquoi) est d’activer l'option "Utiliser les variantes de trait", d'effectuer un nettoyage, puis de la réactiver. La prochaine construction n'avait aucun avertissement.

Pour désactiver "Utiliser les variantes de trait", sélectionnez simplement votre story-board dans le navigateur de projet, puis sélectionnez Inspecteur de fichier.

 enter image description here

Désélectionnez ensuite "Utiliser les variations de trait", effectuez un nettoyage en appuyant sur Maj-CMD K, puis réactivez les variations de trait si vous souhaitez les utiliser.

 enter image description here

1
Scooter

Mon cas est choisir étiquette, puis cliquez sur Ctrl + X, il sera désactivé, mais je ne fais rien avec elle. Quand je construirai, il affichera un avertissement. Solution: enlever l’étiquette ou enlever le contrôle choisi + X pour l’étiquette.

0
Duyen Hang Kim

Je pensais que c’était une contrainte persistante à cause de l’autre réponse, mais c’était dû à un «point de vente» qui me restait pour un élément que j’avais supprimé auparavant. Que faire, c'est:

  1. Sélectionnez votre ViewController
  2. Cliquez sur l'icône 'sortie' en haut à droite
  3. Regardez dans vos points de vente et supprimez soigneusement ceux dont vous n’avez pas besoin

Dans le pire des cas, vous supprimez tous vos points de vente et vous les branchez à nouveau. Cas résolu!

0
Chuckles

Comme mentionné et bien guidé dans la réponse de @ BadCat } _, .__, j'ai suivi les étapes et juste une étape de plus que j'ai osé faire!

Les étapes à suivre après la dernière étape de BadCats répondent:

Étape 1:

J'ai sélectionné la contrainte dans Interface Builder, en gardant à l'esprit son utilité, puis je l'ai supprimée.

Étape 2

Construisez le projet XCode et il vous montrera que le nombre d’avertissements est peut-être augmenté. C'est parce que vous avez supprimé une contrainte qu'il faut bien compiler. Alors, allez à la 3ème étape!

Étape 3

Ajoutez de nouveau la contrainte que vous avez gardée à l'esprit (celle que vous avez supprimée) . Et reconstruisez-la ensuite!

Pour moi, les avertissements ont disparu simplement en faisant ceci!… Je pense que cela fonctionnera pour certaines personnes!

Cause:

Comme je pouvais comprendre le problème qui a provoqué cet avertissement, j’avais une étiquette connectée à un IBOutlet, mais son nom commençait par une lettre majuscule. Alors je l'ai renommé avec une simple lettre dans ViewController et je suis venu le changer dans l'IB. J'ai supprimé passé IBOutlet et je suis allé le connecter au nom de la propriété récemment renommé et connecté. Ensuite, j'ai remarqué qu'il y avait un nouvel avertissement.

J'ai d'abord essayé les réponses suivantes dans ce fil, mais cela n'a pas aidé!

À votre santé!

0
Randika Vishman

J'ai eu le problème sur une vue de pile. Supprimer les contraintes et les ré-ajouter n'a pas aidé. Le nettoyage et la reconstruction n'ont pas aidé. 

Pour moi, la solution consistait à créer un nouvel objet de vue de pile.

Déplacez ensuite tous les éléments de l'ancienne vue de pile dans la nouvelle vue de pile.

La suppression de l’ancienne vue de pile corrigeait le problème.

0
George Filippakos

Je supprime tous les éléments de l'interface utilisateur, y compris leurs contraintes, et les rajoute tous à nouveau, ces avertissements disparaissent tout simplement. Quoi qu’il en soit, c’est un moyen pire mais utile de résoudre ce problème.

0
Old one