Considere tres controladores diferentes A, B y C donde A es el controlador inicial en el controlador de navegación.
Ahora empujo hacia B y luego hacia C.
A --> B --> C
Luego quiero ir de C a A. ¿Cómo puedo ir allí con un solo empujón y animación? Supongo que la forma sería encontrar el controlador A de la pila de navegación y llamar al método popToController
. Avísame si hay alguna otra manera mejor.
Ahora la pregunta principal es cómo puedo pasar los datos de C --> A
. Si es de B --> A
, podría usar la delegación. Pero para C --> A
, ¿qué se podría hacer para usar la delegación?
Tengo una solución alternativa mediante el uso de patrones reactivos de observador, singleton. Pero me gustaría saber si se puede utilizar alguna forma mejor.
2 respuestas
Puede tener varias formas de lograr esta funcionalidad. Una vez puede obtener su VC de la lista y acceder a él.
let viewControllers: [UIViewController] = self.navigationController!.viewControllers ;
for aViewController in viewControllers {
if let controllerA = aViewController as? AViewController) {
controllerA.data = self.data
self.navigationController?.popToViewController(controllerA, animated: true);
}
}
También podría estar interesado en relajarse segue. Aquí también hay un buen ejemplo.
Para pasar datos de C -> A use un patrón singleton. cualquier dato que desee pasar, guardar en variable usando un patrón singleton y luego usar
self.navigationController?.popToRootViewController(animated: true)
Y ahora puedes acceder a los datos donde quieras. espero su ayuda
Nuevas preguntas
ios
iOS es el sistema operativo móvil que se ejecuta en el iPhone, iPod touch y iPad de Apple. Use esta etiqueta [ios] para preguntas relacionadas con la programación en la plataforma iOS. Use las etiquetas relacionadas [Objective-C] y [Swift] para problemas específicos de esos lenguajes de programación.