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.