Crear una subclass UIView que pueda disparar segues

Las instancias de UIButton, UITableViewCell, etc. pueden usarse como fonts de segue en Interface Builder (es decir, puede presionar ctrl-clic sobre esos objects y vincularlos a controlleres en un storyboard).

¿Podemos crear una subclass UIView directa que permita la misma funcionalidad? ¿Si es así, cómo?

NOTA: Esta es otra forma de hacer mi pregunta: ¿cómo puedo agregar elementos en la sección "Segmentos desencadenados" de mis propias classs? Esto es lo que se puede ver para un UITableViewCell:

Segue desencadenado

Como me gustaba tener la misma funcionalidad que Jean, estaba desconcertado. Descargo de responsabilidad: Soy un noob total en iOS y Apple, así que supongo que debe ser yo y mi falta de comprensión de por qué no funciona.

Esta 'respuesta' es más una teoría, y quizás una muy mala. Entonces, hágamelo saber si ya hay una solución.

Teoría

No creo que sea posible extender / controlar la sección 'Segmentos desencadenados' solo por código. Parece que XCode sabe basándose en el control elegido de la biblioteca de objects, que se activó para mostrar.

introduzca la descripción de la imagen aquí

Pensamientos

Tener solo una subclass de, por ejemplo, el button UIB no me proporcionó la sección Segmentos disparados en el Inspector de conexiones. Establecer la class en la sección Clase personalizada tampoco ayuda.

introduzca la descripción de la imagen aquí

Solo cuando uso un button de la biblioteca de objects, obtengo la sección de Segundos disparados. Por ejemplo, si subclaro del button UIB, debería usar un 'Botón'.

introduzca la descripción de la imagen aquí

Jugué con el XML en mi Main.storyboard: cada vez que cambié un <subviews><button ... a una <subviews><view ... la sección 'Segmentos desencadenados' desapareció. Cambie de nuevo y aparece. Vea abajo. Cambié el elemento que contiene el customClass="IconButton" desde el button para ver.

Botón: tener valores disparados

 <viewController title="..." id="Zzf-WE-vxI" customClass="MyCustomClass" ... > <view key="view" contentMode="scaleToFill" id="Mfn-O2-CMJ"> <!-- ... --> <subviews> <button customClass="IconButton" customModule="..."> <!-- ... --> </button> 

Ver: Sin Segundos Disparados

 <viewController title="..." id="Zzf-WE-vxI" customClass="MyCustomClass" ... > <view key="view" contentMode="scaleToFill" id="Mfn-O2-CMJ"> <!-- ... --> <subviews> <view customClass="IconButton" customModule="..."> <!-- ... --> </view> 

Conclusión

Mi conclusión es que XCode muestra la sección Segmentos disparados basada en el elemento / control en el XML de un guión gráfico, no depende de la class I de la subclass. Entonces dudo que sea posible controlar el contenido de la sección de Segundos disparados por código.

Por favor, hágamelo saber si estoy equivocado. Como dije, no tengo experiencia real con los componentes internos de XCode en este momento y tengo curiosidad si mi teoría es simplemente bla bla.

Puede subclasificar el control que se ajuste mejor a su propósito.

Más reciente en Xcode debe colocar el nombre de la class en el inspector correcto y si necesita diferentes opciones, use las properties key.

La pestaña una vez que ha seleccionado la UIView se describe como 'Mostrar inspector de identidad'.

Luego puede acceder al área Clase personalizada y puede seleccionar el nombre de class.

Una característica más sofisticada es usar 'Atributos de time de ejecución definidos por el usuario'

Sí, desde el controller de visualización para ver el controller, cree un segue en el guión gráfico. DEBE otorgarle a ese segue un identificador. Luego escuche los toques comenzados en esa vista y llame [self performSegueWithIdentifier @ "YOUR IDENTIFER"];

No, no puedes hacer directamente un UIVIEW tener una acción. Puede agregar un button AQUÍ AÑADIR UN BOTÓN PARA VER

 UIView * view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)]; [view setUserInteractionEnabled:NO]; [view setBackgroundColor:[UIColor networkingColor]]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom]; [btn addSubview:view]; [btn setFrame:CGRectMake(0, 0, 200, 100)]; [btn addTarget:self action:@selector(click)forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; 

o agregar reconocimiento de golpecitos para ver

 //The setup code (in viewDidLoad in your view controller) UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; [self.view addGestureRecognizer:singleFingerTap]; //The event handling method - (void)handleSingleTap:(UITapGestureRecognizer *)recognizer { CGPoint location = [recognizer locationInView:[recognizer.view superview]]; //Do stuff here... }