Descartar vista desplazada desde el controller de navigation

Tengo un controller de navigation con un controller de visualización que muestra un button. El button está vinculado a otro Controlador de vista utilizando un segue de inserción que agrega automáticamente una barra de navigation superior con un button de retroceso. Todo esto funciona bien. Al presionar el button de retroceso se desliza fuera de la segunda vista y vuelve a la 1ª.

Tengo un button en el segundo controller de vista, que cuando se presiona ejecuta un código y una llamada de delegado al primer controller de vista. De nuevo, esto funciona bien.

Ahora solo necesito descartar la 2ª Vista pulsada desde el código como si se presionara el button Atrás. He intentado usar dismissModalViewCcontrollerAnimated y dismissViewControllerAnimated, sin embargo ambos descartan todo el controller de navigation que elimina la vista 2 y 1 (volviendo bak a mi menu principal).

Cuál es la forma correcta de deslizar la vista.

Obtenga una reference a su UINavigationController y llame

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 

en eso.

En Swift sería llamar al método

 self.navigationController?.popViewControllerAnimated(true) 

En breve también puede llamar:

 self.navigationController?.popToRootViewControllerAnimated(true) 

Si usamos push segue, entonces use popViewController

 @IBAction func backButtonClicked(_ sender: Any) { self.navigationController?.popViewController(animated: false) } 

En Objective-C es

 [self.navigationController popViewControllerAnimated:YES]; 

para un salto al primer controller root

 [self.navigationController popToRootViewControllerAnimated:YES]; 

o es un movimiento posible al controller específico

 [self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)]; 

process de animation específico de animation de mover el controller. Si la animation es false el controller aparecerá sin animaciones. El UIViewController debe pertenecer a uno que está en la stack.