iphone - una - ¿Interface Builder no permitirá conexiones a la clase UIView personalizada?
no se pudo verificar la app tutuapp (5)
En mi experiencia, agregas IBAction e IBOutlet a las subclases de UIViewController y no a las subclases de UIView. Entonces, dentro del modelo MVC, su "1" UIViewController tiene todos estos IBOutlets y luego usa los datos de estos IBOutlets para actualizar sus vistas.
Así que está bien crear los objetos UIViews en IB y luego crear las clases correspondientes en el código y luego cambiar la clase de los objetos UIViews en IB a su subclase UIView. Simplemente coloque todos los IBOutlets en el UIViewController que tiene todos los UIViews, obtenga los valores que necesita de los IBOutlets y luego páselos a (configúrelos) sus subclases de UIView.
Espero que esto ayude.
Usando Xcode 4.3.3, no puedo entender cómo conectar tomas en una clase UIView personalizada con objetos creados en Interface Builder.
En un ViewController, tengo una variedad de botones, controles deslizantes, etc. que intento agrupar en Vistas. Entonces, dentro de ese ViewController en IB, agregué 3 vistas. Solo 1 vista será visible en un momento dado.
Obtuve clases personalizadas de UIView para manejar cada una de estas 3 vistas. Mi controlador de vista crea una instancia de cada una de las clases. Seleccioné la (s) vista (s) en IB, abrí el Inspector de Identidad y configuré la (s) Clase (s) a mi (s) clase (s) personalizada (s). Pero cuando intenté arrastrar conexiones de la vista y / o sus controles constituyentes al archivo .h de la vista personalizada, IB no agregará una conexión.
IB me permite agregar salidas / acciones arrastrando al archivo .h del controlador de vista principal, pero no al archivo .h de la vista personalizada. Pensé que una vez que configurara la clase de View para que fuera mi clase personalizada, podría arrastrar los puntos de venta de los componentes de la vista a mi clase personalizada en lugar de a la controladora de vista.
Esta pregunta parece idéntica a la mía: cómo conectar las tomas de UIview a una subvista personalizada. Las dos soluciones (agregar puntos de venta manualmente y establecer la clase de la vista en IB) no cambiaron mi comportamiento. Aquí están los puntos de venta manuales que agregué:
customView3.h
#import <UIKit/UIKit.h>
@interface customView3 : UIView
@property (retain) IBOutlet customView3 *view3;
@property (retain) IBOutlet UISlider *slider;
@end
customView3.m
#import "customView3.h"
@implementation customView3
@synthesize view3, slider;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
@end
¿Que me estoy perdiendo aqui? ¿Qué más debo configurar / verificar para agregar salidas a mi UIView personalizado en lugar de al controlador de vista?
Lo que estás tratando de hacer es ciertamente sensato (OMI) y posible. Sin embargo, XCode es bastante peculiar cuando se trata de establecer conexiones a puntos de venta en las subvistas.
Descubrí que limpiar, reconstruir y, a veces, reiniciar XCode tiende a ayudar, pero a veces simplemente no funciona. En algunos casos lo conseguí trabajando creando manualmente la toma de corriente y arrastrándome de la toma de corriente al control en lugar de hacerlo de la otra manera.
Esto no es muy útil, lo sé, pero quería dejar en claro que se supone que funciona y cuando no se debe a un error en XCode.
Abrí un error con Apple. Si sucede algo interesante, actualizaré esta respuesta.
Actualizado 10/4/13: después de mucha investigación, parece que la raíz del problema es que el IB cree que estoy tratando de conectar objetos a propiedades dentro de una clase, que voy a crear un enjambre de instancias de esto. clase y, a continuación, IB no podrá decir qué instancia debe manejar los mensajes. Por lo tanto, no permite la conexión con la creencia de que estoy (potencialmente) haciendo conexiones simultáneas de un objeto a copias múltiples de una propiedad en varias instancias de la clase.
Mi opinión es que solo quiero una instancia única de UIView personalizada, y que debería poder decirle a IB, "no se preocupe, solo está tratando con esta instancia única".
Ahora estoy centrado en un nuevo proyecto y no he tenido la oportunidad de volver a intentarlo en Xcode 5; sin embargo, dada la información anterior, tampoco soy optimista de que funcione en Xcode 5.
Tenga en cuenta que hice que esto funcione hoy, pero tuve que insertar / escribir las salidas a mano en la clase derivada, luego pude arrastrar desde el archivo de encabezado al elemento UI en el guión gráfico, pero no al revés.
Tuve el mismo problema y encontré una solución:
1) Abra el Editor Asistente con customView3.xib a la izquierda y customView3.h a la derecha
2) Ctrl + arrastre desde UISlider en customView3.xib al código customView3.h a la derecha
3) Aparecerá una opción para crear una nueva conexión de salida.
4) Nombre la conexión y haga clic en conectar
Luego creará un IBOutlet conectado.