web-dev-qa-db-fra.com

Recherche de la cause de "La largeur maximale de présentation préférée automatique n'est pas disponible sur les versions iOS antérieures à 8.0"

Je connais la raison de cet avertissement et comment le résoudre: donner une largeur préférée à l'étiquette.

Le problème est que, lorsque je clique sur cet avertissement, aucun libellé/vue/contrôleur de vue n'est sélectionné. Le storyboard s'ouvre et c'est tout. Il existe de nombreux contrôleurs de vue avec de nombreuses vues dans mon story-board. Comment savoir quelle étiquette est à l'origine du problème sans parcourir manuellement tous les contrôleurs de vue? Lorsque je clique sur l'avertissement, j'attends qu'il m'amène à la vue à l'origine de l'avertissement, mais cela ouvre simplement le scénario.

14
Can Poyrazoğlu

Voici un moyen de trouver l'étiquette spécifique à l'origine de cet avertissement:

  1. Faites un clic droit sur l'avertissement et choisissez "Révéler dans le journal"
  2. L'avertissement dans le journal sera mis en évidence. Copiez l'ID d'objet de générateur d'interface pour cette étiquette (il ressemble à xxx-xx-xxx). 
  3. Collez ceci dans le navigateur de recherche. Lorsque vous cliquez sur ce résultat, le générateur d'interface s'ouvre avec l'étiquette incriminée sélectionnée.
38
Don Eichenseer

Sous XCODE 6.1, j’ai trouvé que le moyen le plus simple de trouver l’erreur était via le Navigateur de rapports. 

  1. View -> Navigators -> Show Report Navigator ou appuyez simplement sur ⌘-8
  2. Cliquez sur la construction dans le volet de gauche.
  3. Cliquez sur l'icône de détails à côté de l'avertissement. 

enter image description here

  1. Recherchez l'ID d'objet dans la description de l'avertissement.

enter image description here

  1. Accédez au fichier et recherchez ⌘-f pour l'ID d'objet.

enter image description here

  1. Corrigez le problème. La largeur de disposition maximale préférée automatique n'est pas disponible sur les versions iOS antérieures à 8.0
11
Tom Howard

La réponse de @Don Eichenseer est géniale. Mais pour ceux qui veulent le résoudre: J'ai le même problème avant. Le problème était dû à une UILabel dont la propriété Lines (dans l'inspecteur d'attributs) était supérieure à 1. Lorsque vous avez trouvé la UILabel associée, définissez-la Lignes sur 1.

2
Majid

il suffit de supprimer le numéro de ligne de l'étiquette et de le définir par programme 

[label setNumberOfLines:2];
2
Fadi Abuzant

Comme indiqué dans cet article , vous pouvez également utiliser cette expression rationnelle <label (?!. * preferredMaxLayoutWidth) dans le storyboard source, pour trouver toutes les étiquettes pour lesquelles la définition de la propriété preferredMaxLayoutWidth n'est pas définie. Alors corrige le.

2
Romain TAILLANDIER

Est-ce l'avertissement d'une vue de collection? Si c'est le cas, je suppose qu'il s'agit d'une cellule et d'une étiquette avec un nombre de lignes défini à zéro. 

1
Henry T Kirk

J'ai eu le même problème dans un projet existant développé en version 7.1 sans autolayouts. Une fois que j'ai migré l'application vers iOS8 et que la version 8.0 a été modifiée dans le fichier de projet, le message d'avertissement s'affiche dans Xib, où j'ai UILabel utilisé avec plusieurs lignes.

afin de corriger le problème, sélectionnez l'inspecteur de fichier pour Xib et vérifiez la version pour laquelle il est construit. Dans mon cas, c'était toujours pour iOS7.

 enter image description here

vous devriez changer le Build pour à la version appropriée

 enter image description here

et l'avertissement disparaîtra comme dans mon cas :-)

0
Gutty1

Je dois passer à XCode 6.2 -> cliquez sur l'icône d'avertissement en haut à droite de la zone principale de XCode -> choisissez l'avertissement -> il montre exactement l'élément qui a provoqué l'avertissement.  enter image description here

0
samthui7