Ahora volvemos al Storyboard, seleccionamos ViewControllerC y arrastramos desde el controlador de vista hasta el proxy Exit.

Arrastrando al proxy Exit

En el popup seleccionamos nuestro método unwind.

Seleccionando el método de desenrollado

Por último, le damos un identificador a nuestro segmento de desenrollado.

El unwind segue ahora tiene un identificador y está conectado al método unwind.

Ahora sólo queda activar el unwind segue cuando se pulse nuestro botón.

@IBAction func backToATapped(_ sender: Any) {
performSegue(withIdentifier: "unwindToA", sender: self)
}

¡Hemos terminado! 🥂

Desenrollar segue

Algunos detalles técnicos

Antes de concluir este artículo quiero ver lo que hace el runtime bajo el capó.

Localizar el destino es básicamente un paseo por la jerarquía de controladores de vista. El padre del controlador de vista actual o presentingViewController será el siguiente.

En cada parada, el tiempo de ejecución también tiene que comprobar si el controlador de vista tiene algún hijo porque el método de desenrollado podría estar contenido en uno de ellos. Esto se hace llamando al método allowedChildrenForUnwinding(from:), que devuelve un array de UIViewControllers que son hijos del controlador de vista.

Sin embargo, no queremos comprobar la rama que contiene el controlador de vista origen, ya que acabamos de salir de ahí. Eso se evita llamando al método childContaining(_:), que devuelve el controlador de vista hijo que contiene el origen del segue de desenrollado. Este se elimina del array.

Si el array devuelto contiene algún hijo, el proceso anterior se realiza también sobre ellos. Llega a su fin si se encuentra el destino.

Si el array devuelto está vacío, se llama al método canPerformUnwindSegueAction(_:from:sender:), que comprueba si el controlador de vista contiene el método unwind.

Si lo tiene, llegamos a nuestro destino y el proceso ha terminado. Si no es así, subimos un escalón en la jerarquía del controlador de vista y realizamos los mismos pasos.

Conclusión

Espero que hayas disfrutado de este breve tutorial sobre segmentos unwind, gracias por tomarte el tiempo de leerlo.

Articles

Deja una respuesta

Tu dirección de correo electrónico no será publicada.