2012-05-08 16 views
5

Así que comencé a jugar con guiones gráficos en XCode 4.3.2. Empecé con la aplicación Master-Detail (aplicación de vista dividida para iPad). En la vista de detalles (llamada DetailVC) tengo una vista donde visualicé una matriz de vistas personalizadas.Storyboard de XCode: cómo crear un segue cuando el desencadenador segue no está en el guión gráfico

Las vistas personalizadas (llamadas GridView) tienen un reconocedor de gestos de toque que se supone que maneja el evento tap en cada vista personalizada. Al tocar GridView, se muestra un controlador de vista para mostrar algunos resultados de búsqueda (llamado SearchResultsVC).

Con GridView creados en un archivo semilla separada, y la DetailVC y SearchResultsVC residen en guión gráfico, ¿cómo puedo crear un segue de empuje con destino SearchResultsVC? Acabo de crear una transición entre DetailVC y SearchResultsVC? ¿Hay alguna forma en que pueda activar esta segue programáticamente desde el interior de la clase GridView cuando se reconoce el gesto de toque?

Respuesta

7

En el método en el que maneje el uso del grifo:

[auto performSegueWithIdentifier: @ "yourSegueIdentifier" remitente: auto];

En su control StoryBoard arrastre desde su DetailVC a su SearchResultVC y elija qué tipo de segue le gustaría. Asegúrese de nombrar su identificador de segue igual al que se encuentra en el método anterior en el inspector de atributos.

Voy a tratar de mejorar mi respuesta metí la pata pienso:

1) En su DetailVC.h crear una variable de instancia para su GridView como esto

IBOutlet UIView * gridView; 

también crear una método getter y un IBAction para su vista de cuadrícula como esto

-(UIView *)gridView; 
-(IBAction)myGridGotPressed:(id)sender; 

2) en su DetailVC.m implementar sus métodos como éste

-(UIView *)gridView{ 
if(!gridView){ 
[[NSBundle mainBundle] loadNibNamed:@"GridView" owner:self options:nil]; 
} 
return gridView; 
} 

también poner en práctica su IBAction como esto

-(IBAction)myGridGotPressed:(id)sender{ 
[self performSegueWithIdentifier:@"yourSegueIdentifier" sender:self]; 
} 

3) Para que esto funcione es necesario cambiar la clase filesOwner de su GridView para DetailVC y luego conectar los puntos de venta y acciones de forma normal.

Espero que ayude.

+1

la vista de la grilla tendría que pasar el toque de regreso a DetailVC. Las subclases de UIView no pueden realizar segues. – jrturton

+0

Supuse que DetailVC tendría el método para manejar el toque a través de IBAction o su propio protocolo. –

+0

@jrturton - ¿Cómo debo devolver el toque a DetailVC? Uso de delegados: ¿cómo podría obtener una referencia a DetailVC en ese caso (las vistas no deberían conocer los controladores de visualización, ¿verdad?) – vikmalhotra

Cuestiones relacionadas