Pasar datos entre controladores de vista en Swift
Estoy intentando convertir una aplicación de Objective-C a Swift pero no encuentro cómo pasar datos entre vistas usando Swift. Mi código Objective-C es
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
AnsViewController *ansViewController;
ansViewController = [storyBoard instantiateViewControllerWithIdentifier:@"ansView"];
ansViewController.num = theNum;
[self presentViewController:ansViewController animated:YES completion:nil];
Lo que eso hace es básicamente tomar la variable, theNum, y la pasa a la variable, num, en un controlador de vista diferente. Sé que esta puede ser una pregunta fácil, pero me estoy confundiendo bastante con Swift, así que si alguien pudiera explicar cómo lo cambiaron a Swift, sería muy apreciado.
Gracias
Supongamos que estamos en firstView , vamos a DetailView y queremos pasar datos de firstView a Detailview. Para hacer eso con el guión gráfico, en la primera Vista tendremos un método:
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "segueTest") {
//Checking identifier is crucial as there might be multiple
// segues attached to same view
var detailVC = segue!.destinationViewController as DetailViewController;
detailVC.toPass = textField.text
}
}
y luego en la clase de DetailView declaramos una variable:
var toPass: String!
luego puedes usar la variable toPass
(por supuesto, puedes cambiar el tipo de variable como quieras, en este EX solo hago una demostración para el tipo de cadena).
class AnsViewController: UIViewController {
var theNum: Int
override func viewDidLoad() {
super.viewDidLoad()
println(theNum)
}
}
override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
let viewController = self.storyboard.instantiateViewControllerWithIdentifier("ansView") as AnsViewController
viewController.num = theNum
self.presentViewController(viewController, animated: true, completion: nil)
}
Para pasar cadenas o cualquier dato de un controlador a otro rápidamente.
Sigue los siguientes pasos:
1) Crear propiedad en el controlador secundario comovar abc:string!
2) Crear objeto de controlador infantil
let storyboard:UIStoryboard()
let viewController: childcontroller = storyboard.instantiateViewControllerWithIdentifier("childcontroller") as! childcontroller
viewController.abc = "hello";
self.navigationController.pushviewController(Controller:viewController animated:true CompletionHandler:nil)