Esta advertencia ocurre en Xcode 6.1. ¿Alguien tiene ideas sobre qué significa esta advertencia y qué sucederá con ella? ¡Muchas gracias!
A continuación se muestra una captura de pantalla con las advertencias abiertas en el código fuente "
¿Cómo encontrar qué restricción causa la advertencia? Xcode no le dice qué restricción es el problema.
ios
xcode
cocoa-touch
storyboard
xcode6
Zhihao Yang
fuente
fuente
Respuestas:
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 referenciada haciendo clic en la advertencia. Supongo que esto es un error y se solucionará tarde o temprano.
Sin embargo, mientras tanto puedes usar esta pequeña solución:
Paso 1: Detecta advertencias molestas 😱
Paso 2: Haga clic derecho / Ctrl-clic en la advertencia, seleccione
Reveal in Log
😨Paso 3: admire la belleza del siguiente fragmento de registro:
Hmmm ... ¿Qué es esto ...?
Paso 4: Arrojemos eso a la barra de búsqueda del proyecto ... 😐
😮 Sí, lo has adivinado bien. Pinchalo.
Paso 5: 😁 ¡Dios mío! Disfruta de unos minutos adicionales de productividad hasta que Apple corrija este molesto error. 😎
Para 2016 ...
Tenga en cuenta que para Xcode de 5/2016, molestamente, tiene que salir y reiniciar Xcode para borrar esta advertencia en algunos casos.
Tenga en cuenta que, de manera confusa, el mismo error puede ser causado por un problema no relacionado (esto parece ser un error de Apple o un mal uso del lenguaje de error): si tiene
IBInspectable
elementos y los renombra en sus archivos Swift. Xcode no elimina los antiguos UserDefinedRuntimeAttributes por usted. Simplemente haga clic en "Inspector de identidad" (elemento 3 en el panel derecho) y elimine los elementos defectuosos.Para 2017 ...
fuente
Este mensaje se activa cuando ha desactivado una vista en su guión gráfico, pero no desactiva las restricciones basadas en esa vista.
Por ejemplo, desactivó un botón, pero aún tiene algunas restricciones vinculadas a ese botón. Puede ser una restricción intrínseca como la altura o el ancho, o una restricción relativa como la distancia desde otra vista.
Debe desactivar cada una de las restricciones que hacen referencia a la vista, y debe hacerlo manualmente. Xcode está siendo demasiado conservador aquí y no lo hará por usted.
fuente
Esta solución me funciona.
Debido a que copié varios elementos del proyecto que desarrollé en Xcode 5 en Xcode 6, y el guión gráfico en Xcode 6 admite múltiples diseños, para cada restricción, necesito instalarlo en la configuración actual.
Por ejemplo, estoy usando "Ancho compacto | Altura normal", para la restricción que necesito establecer como a continuación:
Después de verificar y establecer todos los cientos de restricciones en mis proyectos, limpiar y construir, las advertencias finalmente desaparecen.
fuente
Installed
casillas molestas en los atributos de su objeto de vista. Por lo tanto, asegúrese de que los objetos de vista que cree que se muestran tengan marcada la casilla correcta. La advertencia le indica que algunos objetos no se muestran en elcurrent configuration
.Solo quería agregar mi caso sobre cómo me ocurrió este error: en mi caso, quería eliminar un campo de texto con "Cmd + Retroceso". Hice esto directamente en la vista de árbol de Scene-Builder:
Puedes ver que el campo de repetición está atenuado.
Entonces eso fue fácil de descubrir para mí. Puede simplemente eliminar realmente el campo seleccionando:
Editar-Eliminar desde el 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 ...
fuente
Explicación ampliada
No hay nada malo con las otras respuestas. Solo quería llamar la atención sobre la redacción de la advertencia original e identificar un par de casos de uso en los que esto puede aparecer en el flujo de trabajo.
Esto significa que algún elemento (generalmente un control o vista personalizada que normalmente es visible) al que se hace referencia en una o más restricciones está desactivado (desactivado o la casilla de verificación "instalada" está desactivada). Si, por ejemplo, decide que desea mover un control o vista en su guión gráfico fuera de la vista principal (o puede ver a veces al hacer algo interesante en las clases de tamaño), puede ver esta advertencia si el control tiene restricciones asociadas. .
Junto con la solución recomendada:
Dos enfoques para arreglar
Esquema del documento
Visualmente puede abrir el Esquema del documento en su guión gráfico y buscar las Restricciones en gris que hacen referencia a su control / vista sentado fuera de la vista principal (amplíe el contorno, haga clic en la restricción y vea el inspector de atributos, con el mouse hacia abajo para revisar rápidamente) . Luego, elimine la restricción de este contexto (clase de tamaño). Por ejemplo, en mi caso, solo mantengo el control hasta que decida más adelante dónde presentarlo, así que decidí eliminar por completo la restricción ofensiva hasta más tarde. Pero en una clase de tamaño simplemente desinstalaría la restricción del contexto actual utilizando la casilla de verificación instalada en el inspector de atributos.
Navegador de registros / herramienta de búsqueda
También se puede seguir usando el Navegador de registros para encontrar el control del problema a través del identificador único dado a cada objeto en el guión gráfico. En el registro, sería justo antes del texto resaltado en amarillo y normalmente toma la forma que se ve en mi ejemplo anterior: jvj-mY-DHf
Al usar el identificador, se puede usar la herramienta de búsqueda en Xcode para localizar y eliminar (completamente) o desinstalar (para el contexto actual) la restricción ofensiva.
Si eres aficionado a Xml y su simplicidad, también puedes abrir Storyboard como código fuente y encontrar el identificador único ofensivo y eliminar el bloque apropiado de xml.
fuente
Una de las razones por las que esto podría suceder es porque seleccionó una clase de tamaño que no es compatible con sus restricciones (
wAny hAny
es un caso común). En tal caso, simplemente seleccione una clase de tamaño diferente en Interface Builder y ya está.fuente
Para mí, sucede si configuro un objeto una nueva restricción a objeto (no ver) con la opción "Restricción a márgenes" sin marcar. Problema resuelto marcando la opción (que es la predeterminada).
fuente
Lo que funcionó para mí (y no tengo idea de por qué) es desactivar "Usar variaciones de rasgos", luego realizar una limpieza y luego volver a activarlas. La siguiente versión no tenía advertencias.
Para desactivar "Usar variaciones de rasgos", simplemente seleccione su guión gráfico en el Navegador de proyectos y luego seleccione Inspector de archivos.
Luego, simplemente anule la selección de "Usar variaciones de rasgos", realice la limpieza presionando Shift-CMD K, y luego vuelva a activar las variaciones de rasgos si desea usarlas.
fuente
Pensé que era una restricción persistente debido a la otra respuesta, sin embargo, se debió a una "salida" que todavía tenía para un elemento que eliminé antes. Que hacer es:
En el peor de los casos, elimina todos los puntos de venta y simplemente vuelve a conectarlos. ¡Caso resuelto!
fuente
Como se mencionó y bien guiado en la respuesta de @ BadCat , seguí los pasos y ¡solo un paso más me atreví a dar!
Pasos a seguir después del último paso de la respuesta de BadCats:
Paso 1:
Seleccioné la restricción en el Creador de interfaces y luego tuve en cuenta para qué sirve y luego la eliminé.
Paso 2
Cree el Proyecto XCode y le mostrará que puede aumentar el número de Advertencias. Esto se debe a que ha eliminado una restricción que necesita compilar bien. ¡Entonces, vaya al 3er paso!
Paso 3
Vuelva a agregar la restricción que tenía en mente (la que eliminó). ¡Y luego reconstruirlo de nuevo!
¡Para mí las advertencias desaparecieron simplemente haciendo esto! ¡Supongo 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 le cambié el nombre con una simple letra en el ViewController y vine a cambiarlo en el IB. Eliminé IBOutlet pasado y fui a conectarlo al nombre de propiedad recién renombrado y me conecté. Entonces noté que aparece una nueva advertencia.
Primero probé la siguiente respuesta también en este hilo, ¡pero no me ayudó!
¡Salud!
fuente
Mi caso es elegir etiqueta, luego hacer clic en control + X, se desactivará, pero no hago nada al respecto. Cuando construya, mostrará una advertencia. Solución: elimine la etiqueta o elimine el control elegido + X para la etiqueta.
fuente
Elimino todos esos elementos de la interfaz de usuario, incluidas sus restricciones, y los agrego de nuevo, esas advertencias simplemente desaparecen. De todos modos, esta es una forma peor pero útil de resolver esto.
fuente
Tuve el problema en una vista de pila. Eliminar las restricciones y volver a agregarlas no ayudó. La limpieza y la reconstrucción no ayudaron.
Para mí, la solución fue crear un objeto de vista de pila completamente nuevo.
Luego mueva todos los elementos de la vista de pila anterior a la nueva vista de pila.
Eliminar la vista de pila anterior solucionó el problema.
fuente