2012-05-31 8 views
6

estoy trabajando en guiones gráficos que tiene dos puntos de vista en la primera vista se coloca una condición que quiero si los satisface la condición entonces sólo la navegación pasarancómo aplicar basado en la condición segue costumbre en guión gráfico

para esto he utilizado personalizada segue, pero no importa si mi condición satisface o no, navega hacia una nueva vista.

He creado método en la clase personalizada segue

- (void) perform{ 

    NSLog(@"source %@",self.sourceViewController); 
    NSLog(@"dest %@",self.destinationViewController); 

    UIViewController *sVC=self.sourceViewController; 
    UIViewController *dVC=self.destinationViewController; 

    [sVC.navigationController pushViewController:dVC animated:YES]; 


} 

Quiero condición de establecimiento si el resultado es 1, entonces sólo se debe navegar. Woul prepareforsegue o initwithsegue bríndeme ayuda

+0

Dé formato a su código. –

Respuesta

30

¿Está diciendo que solo desea realizar el cambio si una condición es verdadera?

Si es así, en lugar de crear el segue directamente desde una celda de control o tabla, cree un segue sin desencadenador. Un segue sin desencadenador tiene como fuente el controlador de vista y nunca se disparará automáticamente. En su lugar, puede activarlo programáticamente cuando lo desee, incluso desde un IBAction.

Para crear un segue sin desencadenador, inicie el control + arrastrando la transición desde el icono que contiene el controlador de vista en la base de escena en la parte inferior de la escena. Arrastre a la escena de destino como normal, y elija el tipo de segue. Seleccione el segue, y en el inspector, elija un identificador de segue.

En tiempo de ejecución, cuando desee realizar la segue, invoque - [UIViewController performSegueWithIdentifier: sender:]. Puede pasar cualquier objeto que desee para el remitente, incluido nil. Si el remitente no tiene utilidad para usted, pase nil.

Así, en resumen:

  • Crear un segue sin gatillo desde el controlador de vista de la escena de destino
  • Establecer un identificador para el segue en el inspector de
  • En tiempo de ejecución, y el código de forma, llamada - [UIViewController performSegueWithIdentifier: remitente:] cuando desea desencadenar el cambio.
+0

Gracias por su respuesta, pero podría decirme por favor que el movimiento que arrastro desde el origen al destino me muestra push, modal, personalizado y selecciono el personalizado y le doy a este segue un identificador. Pero como he establecido su identificador, entonces lo forzará llame al método de la clase segue al hacer clic en el botón cómo comprobará la condición –

+0

Hola Jon, apliqué como dijiste y ahora empuja dos veces creé una transición de inserción y configuré su identificador cuando hago clic en el botón que escribí [UIViewController performSegueWithIdentifier: sender:] method [self performSegueWithIdentifier: @ "JHCustomSegue" remitente: nil]; ¿puedes por favor chk wat que estoy haciendo mal aquí –

+3

Hola, finalmente encontré la solución Espero que ayude a otros Usted puede realizar manualmente segues. Cuando crea un segue en el guión gráfico, en lugar de Ctrl + arrastrar desde un botón a un controlador de vista, arrastre desde el controlador de vista a otro controlador de vista. Déle un nombre al segue, luego en su código llame a [self performseguewithidentifier @ "seguename"] –

Cuestiones relacionadas