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 SecondViewController
encima 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 SecondViewController
y no pasar datos, pero como hemos definido un protocolo, lo usaremos en ViewController
para manejar los datos.
Así que a continuación, en ViewController
agregue 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 ViewController
clase de, agregue esto:
func didFinishSecondVC(controller: SecondViewController)
self.myBoolVar = true
controller.navigationController?.popViewControllerAnimated(true)
En SecondViewController
donde estamos llamando didFinishSecondVC
estamos 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 ViewController
en la función a la que apuntamos empujar a SecondViewController
añ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