ios interface-builder nslayoutconstraint outlet

ios - No se puede realizar la conexión de salida a una restricción en IB



interface-builder nslayoutconstraint (5)

¿Estás tratando de crear la conexión en una clase UIView? Parece que solo puedes crear una conexión en la clase UIViewController que está asociada con esa escena en tu Storyboard.

Por lo tanto, su solución es probablemente lo correcto si desea hacerlo desde la propia Vista.

Estoy ejecutando XCode 5 con iOS 7. Necesito cambiar dinámicamente la restricción de altura de un UITextView antes de su diseño. He visto muchas publicaciones que indican que esto se puede hacer al hacer una conexión de salida desde la restricción en IB al código fuente. Estoy tratando de hacer la conexión desde la salida de la restricción en IB al archivo de encabezado de la clase propietaria, pero no puedo hacer la conexión: IB no se "resalta" cuando arrastro el archivo de encabezado, como sucede al hacer conexiones de otros objetos como botones etc.

¿Alguien encontró esto antes? Toda ayuda es muy apreciada.


Aquí hay una foto de mí haciéndolo. Estoy arrastrando los controles de la restricción al archivo de encabezado.

En la vida real, es más probable que controle y arrastre a la categoría anónima en el archivo de implementación, porque no quiero que una propiedad de IBOutlet sea pública. Así que aquí hay una foto de eso también. Lo sentimos, esta captura de pantalla no muestra el cursor: está en el extremo inferior de la línea de estiramiento.


Creo que llego tarde a esta respuesta, pero puede valer la pena escribirla. Tuve un problema similar. No había configurado correctamente el propietario del archivo para la vista. Puedes hacer una prueba simple usando el editor asistente . Si el editor asistente no le permite seleccionar la selección automatic para el controlador de vista, significa que no configuró correctamente el propietario del archivo. Compruebe que el controlador de la vista tenga el mismo nombre que el archivo .xib (que suele ser el caso).

Esto le permitirá conectar todos sus IBOutlets, incluidas las restricciones.


Ok, todavía no puedo hacer la conexión a la restricción en IB. Sin embargo, resolví el problema haciendo de la restricción de altura de la vista de texto un marcador de posición en IB que reemplacé con una NSLayoutConstraint que creo en el initWithCoder de la vista. Mantengo una referencia a la restricción creada y modifico su propiedad "constante" según sea necesario.

Probablemente me mantendré en esta solución, pero si alguien me puede ayudar con el problema original, sería muy apreciado.


Puede hacer una conexión de salida por:

  1. Abriendo el editor asistente y luego presione ctrl + arrastre su vista de texto al archivo de encabezado respectivo. Debería ver una propiedad creada para la vista de texto.

  2. Escriba manualmente @property(nonatomic,retain)IBOutlet UITextField *yourTextField; .Abra el editor asistente, arrastre desde el pequeño círculo vacío (a la izquierda de la propiedad) hasta el control correspondiente en su controlador de vista.

Si aún no puede realizar la conexión, limpie, guarde su proyecto y vuelva a intentarlo.