vistas vista una que pasar otro otra ios iphone swift segue

ios - vista - viewcontroller que es



Desenrolle segue del botón de navegación hacia atrás en Swift (4)

Tengo una pantalla de configuración, ya que tengo una celda de tabla. Al hacer clic en eso, llevo a otra pantalla donde el usuario puede elegir una opción y quiero que vuelva al controlador de vista anterior cuando se presiona el botón Atrás.

Puedo colocar un elemento de botón de barra personalizado, pero quiero volver al controlador de vista principal con el botón Atrás en la barra de navegación en lugar de con un botón personalizado en la vista.

Parece que no soy capaz de anular el botón de retroceso de navegación para apuntar hacia abajo a mi acción de desenlazar segue y como el botón de retroceso no aparece en el guión gráfico, no puedo arrastrar el botón verde Salir a él

¿Es posible desenrollar un empuje con el botón de retroceso?


Aquí está mi solución, basada en el código Objective-C de Blankarsch a esta pregunta de : Cómo atrapar el evento del botón Atrás

Coloque este código dentro del Controlador de vista del que desea interceptar la llamada del botón Atrás desde

override func didMoveToParentViewController(parent: UIViewController?) { if (!(parent?.isEqual(self.parentViewController) ?? false)) { println("Back Button Pressed!") } }

Dentro del bloque if, maneja lo que necesites para regresar. También deberá tener una referencia al controlador de vista de llamada, ya que en este punto es muy probable que tanto parent como self.parentViewController sean nulos, por lo que no puede navegar por el árbol de View Controller.

Además, es posible que pueda salirse con la suya simplemente con comprobar si no hay ningún padre, ya que no he encontrado un caso en el que al presionar el botón de retroceso no haya resultado en que el padre sea nulo. Así que algo como esto es un poco más conciso:

override func didMoveToParentViewController(parent: UIViewController?) { if (parent == nil) { println("Back Button Pressed!") } }

Pero no puedo garantizar que funcionará siempre.

Andrés


Haga lo siguiente en el controlador de vista que tiene el botón Atrás

Swift 3

override func didMove(toParentViewController parent: UIViewController?) { if !(parent?.isEqual(self.parent) ?? false) { print("Parent view loaded") } super.didMove(toParentViewController: parent) }


Intenté lo mismo y parece que no puede capturar la acción del botón de retroceso estándar, por lo que la solución será usar un botón personalizado y enlazarlo a un segmento que regrese a la página anterior.