Tengo un punto de vista sobre un guión que dispone de un botón para realizar una determinada acción. Para realizar esta acción, sin embargo, el usuario debe iniciar sesión en. El botón controlador de pruebas, si el usuario se registra y realiza un pase si es que SÍ y otro si NO. El NO desemboca empuja a un inicio de sesión de controlador de vista. Hay otra secuencia de conexión de regreso a la primera vista controlador, así si la conexión es exitosa, el usuario puede recoger donde lo dejó. El punto de vista de los controladores están incrustados en un controlador de navegación.

El problema es que el ‘retorno’ segue es la carga de toda una nueva instancia de la vista controlador y no hacer referencia a la origional instancia, así que terminan con el vacío de los elementos de la interfaz y 2 copias de la vista controlador en la memoria.

¿Cómo puedo volver a la original de la instancia del controlador de vista?

InformationsquelleAutor TijuanaKez | 2012-04-04

4 Comentarios

  1. 137

    Asumiendo por su uso de «push» usted significa que usted está usando un UINavigationController, entonces usted puede utilizar la siguiente para volver a la parte superior de la pila.

    [self.navigationController popToRootViewControllerAnimated:YES];

    o

    UIViewController *prevVC = [self.navigationController.viewControllers objectAtIndex:<n>];
    [self.navigationController popToViewController:prevVC animated:YES];

    pop a un nivel específico donde <n> es el nivel.

    o

    [self.navigationController popViewControllerAnimated:YES];

    Si sólo quieren saltar a un nivel de copia de seguridad de la navegación de la pila.

    • Tengo un UIBarButton que se carga inicialmente en ViewDidLoad en la pantalla anterior (la que nos estamos volviendo a). Cuando yo uso el código, UIBar no muestran en absoluto. Alguna idea de por qué?
  2. 33

    Lugar de utilizar una continuación para volver a la anterior controlador debe utilizar el evento que se asoció con el pase de volver a su lugar de despedir a la vista actual del controlador (si segue fue modal) o pop este, desde la navegación por el controlador (si el pase fue de empuje) y el anterior controlador mostrará automáticamente.

    Por ejemplo, si el modal de transición que va de regreso fue que se realiza cuando se pulsa un botón en la pantalla de inicio de sesión, eliminar el pase del storyboard y la toca hasta dentro del evento del botón de vínculo con su acción que, tras el exitoso inicio de sesión de llamada:

     [self dismissViewControllerAnimated:YES completion:nil];

    En el guión gráfico, podrás hacer clic derecho sobre el botón y arrastre el toque dentro enviado evento para la primera respuesta del controlador de vista de escena. Esto ejecutará el reverso de transición que se ejecuta cuando se realiza el pase de transición. Usted puede utilizar un modal segue para que, sin necesidad de utilizar un controlador de navegación.

    Si usted empuja el inicio de sesión de la vista en la navegación controlador, entonces usted tiene para el pop de la pila (si volver a la vista anterior). Utilice uno de estos:

        [[self navigationController] popViewControllerAnimated:YES];  //goes back to previous view
    [[self navigationController] popToViewController: myViewControllerAfterLogin animated:YES]; //goes back to specific view on stack. 
    [[self navigationController] popToRootViewControllerAnimated:YES]; //goes back to first view on the stack

    La película de animación de transición debe invertir el tipo de transición se utiliza en el pase, por lo que se acurrucan se doblarán hacia abajo al cerrar la vista.

    • Si estás utilizando una costumbre segue, tales como no el efecto de slide para un empuje continuación, el pop no va a ser el reverso de su costumbre segue, sino simplemente un efecto de slide.
  3. 2

    malhal se haga vale la pena hacer clic en su enlace.

    El código parece haberse movido en un poco de Apple ejemplo, y es aún más flexible. Tengo tres escenas, pero sólo uno personalizado ViewController .m archivo. Yo no quiero una pila de navegación. El acceso a las posteriores escenas es por segues de botones. He añadido esta línea en la base de controlador de vista .m de archivo:

    - (IBAction)unwindForSegue:(UIStoryboardSegue *)unwindSegue towardsViewController:(UIViewController *)subsequentVC{}

    A continuación, en la tercera escena I control-arrastró desde un botón a la salida icono y selecciona la relajarte acción. Ahora cae detrás de escena 3 escena 2 sin necesidad de llamar a un dismissViewController método.

    • Creo que la clave de la cosa que finalmente entendí fue que va a descansar la pila hasta que se llega a un controlador que implementa el unwindAction asociadas a la salida de la aplicación que esté utilizando. Así se puede definir múltiples de salida desemboca con diferentes relajarse acciones y, a continuación, implementar el específico relajarse acción en el controlador de donde usted quiere a la tierra, para cada uno de los segues.

Dejar respuesta

Please enter your comment!
Please enter your name here