Saltar al contenido

Swift: usar popViewController y pasar datos al ViewController al que regresa

Ten en cuenta que en la informática un problema casi siempre tiene varias resoluciones, de igual modo te mostraremos la mejor y más óptimo.

Solución:

Así que lo descubrí, basándome principalmente en esta publicación: http://makeapppie.com/2014/09/15/swift-swift-programmatic-navigation-view-controllers-in-swift/

En SecondViewControllerencima de la declaración de clase, agregue este código:

protocol SecondVCDelegate 
    func didFinishSecondVC(controller: SecondViewController)

Entonces dentro de SecondViewContoller agregar una variable de clase:

var delegate: MeditationVCDelegate! = nil

Luego, dentro de su función a la que apunta su botón, agregue esto:

self.navigationController?.popViewControllerAnimated(true)
delegate.didFinishSecondVC(self)

Lo que estamos haciendo aquí es hacer pop in SecondViewControllery no pasar datos, pero como hemos definido un protocolo, lo usaremos en ViewController para manejar los datos.

Así que a continuación, en ViewControlleragregue el protocolo que definió en SecondViewController a la lista de clases ViewController hereda de:

class ViewController: UIViewController, SecondVCDelegate  ... your code... 

Deberá agregar la función que definimos en el nuevo protocolo para que el compilador sea feliz. Dentro de ViewControllerclase de, agregue esto:

func didFinishSecondVC(controller: SecondViewController) 
    self.myBoolVar = true
    controller.navigationController?.popViewControllerAnimated(true)

En SecondViewController donde estamos llamando didFinishSecondVCestamos llamando a este método dentro del ViewController clase, el controlador al que nos dirigimos. Es similar a si escribimos este código dentro de SecondViewController pero lo hemos escrito dentro de ViewController y estamos usando un delegado para administrar la mensajería entre los dos.

Finalmente, en ViewControlleren la función a la que apuntamos empujar a SecondViewControllerañade este código:

let secondVC = secondViewController()
secondVC.delegate = self
self.navigationController?.pushViewController(secondVC, animated: true)

¡Eso es! ¡Debería estar listo para pasar código entre dos controladores de vista sin usar guiones gráficos!

_ = self.navigationController?.popViewController(animated: true)
        let previousViewController = self.navigationController?.viewControllers.last as! PreviousViewController
        previousViewController.PropertyOrMethod

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *