web-dev-qa-db-fra.com

Xcode 8. Éléments de référencement de contraintes désactivés dans la configuration actuelle

J'ai rencontré le problème après la mise à jour vers Xcode 8. Chaque fois que des objets de l'interface utilisateur sont supprimés du storyboard principal, l'avertissement suivant s'affiche:

Éléments de référencement de contraintes désactivés dans la configuration actuelle. Désactivez cette contrainte dans la configuration actuelle.

 enter image description here

Il semble que ce soit un bogue Xcode, mais je souhaite malgré tout supprimer ces avertissements du projet. J'ai trouvé qu'il y avait le même problème avec Xcode 6 ici mais aucune réponse de cette question ne résout le problème correctement non. Ainsi, lorsque je trouve la contrainte incorrecte dans le storyboard et que je la supprime, le nombre de contraintes incorrectes augmente au lieu de diminuer. J'ai des choses que j'ai aussi essayées:

  • nettoyé le projet
  • nettoyé les données dérivées
  • supprimé toutes les contraintes et en a ajouté de nouvelles

Des idées?

16
Danny

J'avais plusieurs vues qui n'étaient pas Installed, après la mise à jour vers xcode 8.1, j'ai eu 2 avertissements.

Les étapes suivantes ont fonctionné pour moi:

1) Nettoyez le projet et redémarrez Xcode, les avertissements ont été réduits à 1.

2) La sélection de l’avertissement indiquera exactement quelle contrainte pose un problème. Ouvrez Attributes Inspector et sélectionnez les vues où la contrainte est appliquée, recherchez Installed si sa case n'est pas cochée dans la vue (pas sur la contrainte). Vous pouvez soit sélectionner Installé dans la vue, soit désélectionner Installé sur contrainte elle-même.

Voir la capture d'écran ci-dessous. Installed n'a pas été coché à l'affichage, pas à la contrainte indiquée par l'avertissement :)

 Installed is unchecked on a view, not on constraint itself

Mise à jour: Même problème avec un autre ViewController, un UIView n’était pas installé pour une classe de taille, je désélectionne Installé sur contrainte elle-même et avertissement est parti aussi, je suppose que ce n’est pas un bogue Xcode, il prétend activer/désactiver Installé sur les deux UIView et Constrarint

17
AamirR

Affichez le Report Navigator [C'est l'onglet le plus à droite dans la colonne la plus à gauche]. Cela montrera le journal de construction avec les identifiants de contrainte. Pour plus de détails, examinez ce message de stackoverflow

4
Munahil

Raison

Vous avez un élément (c'est-à-dire une vue) qui n'est pas installé, mais il a des contraintes qui sont toujours installées. (commenté par fattie )

Comment trouver la contrainte spécifique

Il est difficile de trouver contrainte exacte qui provoque cet avertissement. Il expliquait, étape par étape, dans la réponse de BastiBen comment trouver la contrainte spécifique.

Solution

  • Vérifiez les deux éléments/vues (première et seconde) de la contrainte spécifique si un élément est désinstallé pour une classe de taille spécifique. Dans mon cas, la contrainte a été installée pour toutes les classes de taille, mais l'un des éléments a été installé pour "wC hR" (Voir l'image suivante) . enter image description here
  • Installez l'élément pour résoudre l'avertissement.
  • Maintenant, construisez l'application, si vous trouvez toujours le même avertissement pour cette interface/ce fichier XIB spécifique, ne vous inquiétez pas cette fois, d'autres contraintes ont le même problème.

Conseils pour l'avenir

  • Veuillez vérifier si les vues sont correctement installées lors du copier/coller depuis d'autres interfaces.
1
Milan Kamilya

Vous pouvez également trouver la vue ou la contrainte en consultant la balise dans la source du storyboard. 

  1. Ouvrez le storyboard en tant que source 
  2. Recherchez la balise suivante pour obtenir l'identifiant
  3. Recherchez l'identifiant dans le storyboard pour trouver de quel objet il s'agit. 
1
Maria

J'avais une vue que j'avais désinstallée et l'avertissement est apparu. Après avoir réinstallé la vue, l’avertissement ne s’est pas éloigné, même après un nettoyage. Mais après le redémarrage de Xcode, l'avertissement a disparu.

1
Ben Thomas

Pour résoudre ce problème, il existe plusieurs options: 

D'abord, qu'est-ce qui cause le problème? Désinstaller une vue sans désinstaller ses contraintes.

Deuxièmement pourquoi voudriez-vous cela? Vous voudrez peut-être qu'une vue reste dans votre contrôleur de vue parce que vous l'avez construite, puis que les spécifications ont été modifiées afin que vous souhaitiez la supprimer temporairement, car cette partie n'était peut-être pas incluse dans votre sprint actuel

Dernier comment on le résout?

Il y a trois options:

  1. Si vous pouvez simplement réinstaller la vue

  2. Si vous voulez garder la vue

  3. Si vous pouvez simplement supprimer la vue désinstallée en même temps

Option 1

Si vous pouvez simplement réinstaller la vue:

  1. Réinstallez la vue en basculant l'option installée comme indiqué dans la photo 2 sur n'importe quelle vue estompée comme dans la photo 1

  2. Essayez de nettoyer le projet (Commande + Maj + K) - si cela ne fonctionne pas, essayez de redémarrer xCode. Si cela ne fonctionne pas, vous avez peut-être oublié une vue désinstallée quelque part.

Option 2

Si vous souhaitez conserver la vue:

  1. Trouvez chaque vue de votre système de contrôleur de vue qui s'estompe (cela signifie qu'il a été désinstallé)

1  enter image description here 2  enter image description here

  1. Regardez les contraintes associées à la vue

3  enter image description here

  1. Décocher "Installé"

La contrainte sera maintenant également estompée (pas le groupe de contraintes), comme indiqué dans la première image.

  1. Essayez de nettoyer le projet (Commande + Maj + K) - si cela ne fonctionne pas, essayez de redémarrer xCode. Si cela ne fonctionne pas, vous avez peut-être oublié une contrainte quelque part.

Option 3

Si vous pouvez simplement supprimer la vue désinstallée en même temps

  1. Supprimer les vues désinstallées qui suppriment automatiquement leurs contraintes

  2. Nettoyez le projet (Commande + Maj + K). Si cela ne fonctionne pas, essayez de redémarrer xCode.

0
chris

La solution consistait simplement à supprimer les vues désinstallées. Aussi simple que cela.

0
Suhaib