ios - otro - No se pueden crear conexiones de salida a subvistas en Interface Builder(Xcode 5)
main storyboard xcode (5)
Sé que esto parece ser un duplicado de algunas otras preguntas, pero las respuestas no funcionan para mí.
- He creado una aplicación de vista única.
- En el guión gráfico agregué una subvista a mi vista principal.
- Tengo una etiqueta en mi vista principal y otra en mi subvista.
- He creado una clase de tipo UIView y la he agregado como la clase personalizada para la subvista.
- Puedo arrastrar mi etiqueta en mi vista principal a la clase de controlador de vista principal. Pero cuando intento arrastrar y arrastrar mi etiqueta en mi subvista a mi clase personalizada, no puedo establecer la conexión.
- Incluso escribí la información de la propiedad y traté de hacer la conexión manualmente sin éxito.
Las cosas han cambiado un poco en la última versión de Interface Builder de Xcode. ¿Alguien puede decirme lo que me falta? Literalmente no hay código aquí. Solo estoy probando intentando conectar puntos de venta a una subvista con una clase personalizada.
La primera imagen muestra que configuré la clase personalizada y agregué una propiedad, pero no puedo establecer la conexión.
La segunda imagen muestra que la etiqueta de la vista principal está conectada en el controlador de la vista principal.
La tercera imagen muestra que no hay conexiones de salida para la etiqueta de la subvista.
El problema tiene que ver con el propietario del archivo del controlador de vista. Probablemente esté configurado como IOViewController, por lo tanto, solo puede hacer conexiones de propiedad en ese archivo .h.
Lo que puede hacer es crear otro archivo .nib para la subvista y colocar la subvista allí. Luego, en ese archivo .nib, haga que el propietario del archivo sea IOSubview. Las conexiones de propiedad funcionarán bien allí. Luego simplemente agregue la subvista a su IOViewController programáticamente. Solo recuerde cargar primero el archivo de plumilla del paquete.
Esto es lo que hice (en Swift):
- Creé un nuevo ViewController (por ejemplo, la clase MyViewController: UIViewController {})
- En StoryBoard, amplié las ''Escenas'' (es decir, la vista de árbol de todos los componentes de la interfaz de usuario) y seleccioné ''MyViewController''
- Usando el ''inspector de identidad'' asigné la clase ''MyViewController'' (como oposición al UIViewController predeterminado)
Después de eso pude asignar una acción.
Sospecho que para Obj-C es un proceso similar.
No crea salidas en la subclase, crea la salida en el controlador de vista en el que se encuentra. Debe #importar la subclase en IDViewController.h y crear una salida allí.
IDViewController.h
#import "IDSubclass.h"
...
@property (strong, nonatomic) IBOutlet IDSubclass *outletName;
Zoom de su guión gráfico al 100%. Si reduce la imagen, es decir, el 50%, la conexión de salida no funcionará.
Puede escribir manualmente la declaración de propiedad de IBOutlet
en la @interface
de la subclase de vista personalizada, y suponiendo que haya definido la clase base de su subvista en IB, entonces puede arrastrar desde el círculo de salida en el código hasta el control en el escena.
O, como usted señala, Warren Burton sugirió esta técnica y otra en su respuesta a esta otra pregunta, No se puede conectar con Subview en IB .