Xcode Storyboard warning: Restricción que hace reference a elementos desactivados en la configuration actual. Desactiva esta restricción en la configuration actual

Esta advertencia ocurre en Xcode 6.1. ¿Alguien tiene ideas de qué significa esta advertencia y qué pasará con ella? ¡Muchas gracias!

A continuación se muestra una captura de pantalla con las advertencias abiertas en el código fuente "

introduzca la descripción de la imagen aquí

¿Cómo encontrar qué restricción provoca la advertencia? Xcode no le dice qué restricción es el problema.

introduzca la descripción de la imagen aquí

Esta advertencia puede ser molesta y ocurre a partir de Xcode 6.1.1. El problema principal es que no puede encontrar fácilmente la restricción referenceda haciendo clic en la advertencia. Supongo que esto es un error y se arreglará tarde o temprano.

Sin embargo, mientras tanto puede usar esta pequeña solución:

Paso 1: detecte una advertencia molesta 😱

Advertencia molesta

Paso 2: Derecha / Ctrl-Haga clic en advertencia, select Reveal in Log 😨

introduzca la descripción de la imagen aquí

Paso 3: admira la belleza del siguiente fragment de logging:

 ... 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é es esto …?

interesante

Paso 4: echemos eso en la barra de búsqueda del proyecto … 😐

buscar

😮 Sí, has adivinado bien. Pinchalo.

Paso 5: 😁 OMG! Disfruta de unos pocos minutos adicionales de productividad hasta que Apple solucione este molesto error. 😎

wheeee


Para 2016 …

  • Si no puede getlo con 'Revelar en el logging', muestre el Navegador de informes. (Esa es la pestaña situada más a la derecha en la columna de la izquierda.) Ahórrate en los resultados de la construcción allí. Eso mostrará el logging de construcción, incluida la ID de restricción. la construcción de cortesía se superó

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

  • Tenga en count que para Xcode de 5/2016, molesta que, en algunos casos, tenga que salir y reiniciar Xcode para borrar esta advertencia.

  • Tenga en count que, de forma confusa, el mismo error puede deberse a un problema no relacionado (esto parece ser un error de Apple o un uso inadecuado del lenguaje de error): si tiene elementos IBInspectable , y cambie el nombre de ellos en sus files Swift. Xcode no elimina el nombre anterior UserDefinedRuntimeAttributes para usted. Simplemente click "Identity Inspector" (elemento 3 en el panel derecho) y elimine los elementos dud.

Para 2017 …

  • Otra causa común, y de hecho más simple, del problema. Si pasó a desinstalar un elemento: Al escribir, simplemente Xcode no sabe que también desinstale automáticamente las restricciones que conducen a ese elemento . Simplemente, mire los elementos no instalados, y para todas sus restricciones, márquelos sin instalar. (O simplemente, quizás solo elimine temporalmente el elemento no instalado por completo, para ver si ese es el problema).

Este post se activa cuando has desactivado una vista en tu guión gráfico, pero no desactivaste las restricciones basadas en esa vista.

Por ejemplo, ha desactivado un button, pero aún tiene algunas restricciones vinculadas a ese button. Puede ser una restricción intrínseca como la altura o el ancho, o una restricción relativa como la distancia desde otra vista.

Tienes que desactivar cada una de las restricciones que hacen reference a la vista, y tienes que hacerlo manualmente. Xcode está siendo demasiado conservador aquí y no lo hará por ti.

Esta solución me funciona.

Porque copié varios elementos del proyecto que desarrollé en Xcode 5 en Xcode 6, y el storyboard en Xcode 6 admite layouts múltiples, para cada restricción, necesito instalarlo en la configuration actual.

Por ejemplo, estoy usando "Ancho compacto | Altura regular", para la restricción que necesito establecer como a continuación:

introduzca la descripción de la imagen aquí

Después de comprobar y establecer todos los cientos de restricciones en mis proyectos, limpiar y build, las advertencias finalmente desaparecen.

Solo quería agregar mi caso de cómo me sucedió este error: en mi caso, quería eliminar un campo de text con "Cmd + retroceso". Lo hice directamente en Scene-Builder Tree-View:

introduzca la descripción de la imagen aquí

Puedes ver que el campo de repetición está atenuado.

Entonces, eso fue fácil de descubrir para mí. Simplemente puedes eliminar el campo simplemente seleccionando:

Editar-Eliminar del Menú

Sorprendentemente, esto realmente elimina el campo (incluidas las restricciones). Tal vez esto ayude a alguien a encontrar fácilmente la causa de esta molesta advertencia …

Explicación ampliada

No hay nada malo con las otras respuestas. Solo quería llamar la atención sobre la networkingacción de la advertencia original e identificar un par de casos de uso donde esto puede aparecer en el flujo de trabajo de uno.

advertencia de restricción

Restricción que hace reference a elementos desactivados en la configuration actual.

Esto significa que algún elemento (por lo general, un control o una vista personalizada que normalmente está visible) al que se hace reference en una o más restricciones se desactiva (deshabilita o desactiva la checkbox "instalada"). Si, por ejemplo, decide que desea mover un control o una vista en su guión gráfico fuera de la vista principal (o puede ver a veces cuando hace algo interesante en las classs de tamaño), entonces puede ver esta advertencia si el control tiene restricciones asociadas .

control desinstalado

Junto con la solución recomendada:

Desactiva esta restricción en la configuration actual.

Dos enfoques para arreglar

Esquema del documento

Visualmente, puede abrir el Contorno de documentos en su guión gráfico y search las restricciones atenuadas que hacen reference a su control / vista sentado fuera de la vista principal (ampliar el contorno, hacer clic en la restricción y ver el inspector de attributes, el mouse hacia abajo para revisar rápidamente) . Luego elimine la restricción de este context (class de tamaño). Por ejemplo, en mi caso, simplemente mantengo el control hasta que decida más tarde dónde presentarlo, así que decidí eliminar por completo la restricción ofensiva hasta más tarde. Pero en una class de tamaño simplemente desinstalaría la restricción del context actual utilizando la checkbox instalada en el inspector de attributes.

Log Navigator / Find Tool

También se puede seguir utilizando Log Navigator para encontrar el control del problema a través del identificador único dado a cada object en el guión gráfico. En el logging sería justo antes del text resaltado en amarillo y normalmente toma la forma como se ve en el ejemplo anterior: jvj-mY-DHf

Usando el identificador uno puede usar la herramienta de búsqueda en Xcode para localizar y eliminar (completamente) o desinstalar (para el context actual) la restricción ofensiva.

log-navigator

Si eres aficionado a Xml y su simplicidad, también puedes abrir el Storyboard como código fuente y encontrar el identificador único ofensivo y eliminar el bloque apropiado de xml.

Una de las razones por las que esto podría suceder es porque seleccionó una class de tamaño no compatible con sus restricciones ( wAny hAny es común). En tal caso, simplemente select una class de tamaño diferente en Interface Builder y ya está.

Para mí, sucede si configuro un object una nueva contraintención para objetar (no ver) con la opción "Restricción a márgenes" sin marcar. Problema resuelto con marcar la opción (que es la opción pnetworkingeterminada).

Pensé que era una restricción persistente debido a la otra respuesta, pero se debió a un 'outlet' que todavía tenía para un elemento que eliminé antes. Qué hacer es:

  1. Seleccione su ViewController
  2. Haga clic en el ícono de 'salida' en la esquina superior derecha
  3. Mire a través de sus puntos de venta y elimine cuidadosamente cualquier cosa que no necesite

En el peor de los casos, elimine todas sus salidas y simplemente vuelva a conectarlas. ¡Caso resuelto!

Como se mencionó y bien guiado en la respuesta de @ BadCat , seguí los pasos y solo me atreví a dar un paso más.

Pasos a seguir después del último paso de BadCats:

Paso 1:

Seleccioné la restricción en el Generador de interfaces y luego recordé para qué sirve y luego lo eliminé.

Paso 2

Genere el XCode Project y mostrará que puede ser que aumente el número de advertencias. Esto se debe a que ha eliminado una restricción que necesita para comstackr bien. ¡Vaya al 3er paso!

Paso 3

Vuelva a agregar la restricción que tuvo en count (la que eliminó). ¡Y luego vuelve a buildlo nuevamente!

¡Para mí, las advertencias se fueron simplemente haciendo esto! ¡Creo que esto funcionará para algunas personas!

Porque:

Como pude entender, el problema que causó esta advertencia fue que tenía una Etiqueta conectada a un IBOutlet, pero su nombre comenzaba con una letra mayúscula. Así que cambié el nombre con una simple letra en el ViewController y vine a cambiarlo en el IB. Eliminé el IBOutlet y fui a conectarlo al nuevo nombre de propiedad que se cambió el nombre y lo conecté. Entonces me di count de que aparece una nueva advertencia.

Primero probé la siguiente respuesta también en este hilo, ¡pero no ayudó!

¡Aclamaciones!

Mi caso es elegir label, luego hacer clic en control + X, se desactivará, pero no hago nada con eso. Cuando compile, se mostrará una advertencia. Solución: quite la label o quite el control elegido + X para la label.

Elimino todos esos elementos de interfaz de usuario, incluidas sus restricciones, y las agrego nuevamente, esas advertencias simplemente desaparecen. De todos modos, esta es una forma peor pero útil para resolver esto.

Lo que funcionó para mí (y no tengo idea de por qué) es desactivar "Usar variaciones de rasgo", luego realizar una limpieza y luego volverlas a encender. La próxima versión no tenía advertencias.

Para desactivar "Usar variaciones de rasgo", simplemente select su guión gráfico en Project Navigator y luego select File Inspector.

introduzca la descripción de la imagen aquí

Luego simplemente desmarca "Usar variaciones de rasgo", realiza limpieza presionando Shift-CMD K, y luego vuelve a activar las variaciones de rasgo si quieres usarlas.

introduzca la descripción de la imagen aquí

Tuve el problema en una vista de stack. Eliminar las restricciones y volver a agregarlas no ayudó. La limpieza y la reconstrucción no ayudaron.

Para mí, la solución era crear un object de vista de stack completamente nuevo.

Luego mueva todos los elementos de la vista de stack antigua a la nueva vista de stack.

Al eliminar la vista de stack antigua se solucionó el problema.