Saltar al contenido

Hacer Segue programáticamente en Swift

Solución:

Puede hacerlo como se propone en esta respuesta: InstantiateViewControllerWithIdentifier.

Además, le proporciono el código de la respuesta vinculada reescrita en Swift porque la respuesta en el enlace se escribió originalmente en Objective-C.

let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "identifier") as! SecondViewController

vc.resultsArray = self.resultsArray

EDITAR:

Dado que esta respuesta llama la atención, pensé en brindarle otra forma más segura. En la respuesta anterior, la aplicación se bloqueará si el ViewController con “identificador” no es de tipo SecondViewController. En Swift, puede evitar este bloqueo mediante el uso de un enlace opcional:

guard let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewControllerWithIdentifier("identifier") as? SecondViewController else {
    print("Could not instantiate view controller with identifier of type SecondViewController")
    return
}

vc.resultsArray = self.resultsArray
self.navigationController?.pushViewController(vc, animated:true)

De esta manera el ViewController se empuja si es de tipo SecondViewController. Si no se puede convertir a SecondViewController se imprime un mensaje y la aplicación permanece en la ViewController.

Aún puede crear la transición en Interface Builder arrastrando desde VC1 a VC2; simplemente arrastre desde / hasta el pequeño círculo amarillo en la parte superior de la VC. Dale a este segmento un nombre único en IB, y en tu finish función a la que puedes llamar performSegueWithIdentifier:, pasa el nombre de tu segue, y eso es todo. En el prepareForSegue método, puede averiguar qué segue se está realizando accediendo segue.identifier, y si es el segue en cuestión, puede obtener un puntero para segue.destinationViewController y pasar sus datos de esa manera.

¡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 *