Passage de données entre des controllers de vue dans Swift

J'essaye de convertir une application d'Objective-C en Swift mais je ne peux pas find comment passer des données entre les vues en utilisant Swift. Mon code Objective-C est

UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; AnsViewController *ansViewController; ansViewController = [storyBoard instantiateViewControllerWithIdentifier:@"ansView"]; ansViewController.num = theNum; [self presentViewController:ansViewController animated:YES completion:nil]; 

Ce qu'il fait, c'est qu'il prend la variable, theNum, et la passe à la variable, num, sur un controller de vue différent. Je sais que c'est peut-être une question facile, mais je suis assez confus avec Swift, donc si quelqu'un pouvait expliquer comment ils l'ont changé pour Swift, ce serait grandement apprécié!

Merci

Supposons que nous nous tenons à la première vue aller à la DetailView et que vous voulez passer des données de FirstView à Detailview. Pour faire cela avec storyboard, à la première vue nous aurons une méthode:

 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 } } 

puis dans la class de DetailView nous avons déclaré une variable:

 var toPass: Ssortingng! 

alors vous pouvez utiliser la variable toPass (bien sûr vous pouvez changer le type de la variable comme vous voulez, dans cet EX je viens de démo pour le type de string).

 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) } 

Pour transmettre une string ou des données d'un controller à un autre dans swift.

Suit les étapes ci-dessous:

1) Créer une propriété dans le controller enfant comme var abc:ssortingng!

2) Créer un object de childcontroller

 let storyboard:UIStoryboard() let viewController: childcontroller = storyboard.instantiateViewControllerWithIdentifier("childcontroller") as! childcontroller viewController.abc = "hello"; self.navigationController.pushviewController(Controller:viewController animated:true CompletionHandler:nil) 
 Using tableview, func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let ClubProfileView = self.storyboard?.instantiateViewController(withIdentifier: "CBClubProfileViewController") as! CBClubProfileViewController let TempCulubDic:NSDictionary = ((ClubsListbyDateDic.object(forKey:((ClubsListbyDateDic.allKeys as! [Ssortingng]).sorted(by: <)as NSArray).object(at: indexPath.section) as! Ssortingng) as! NSArray).object(at: indexPath.row))as! NSDictionary let ClubId:Ssortingng=(TempCulubDic.value(forKey: "club_id") as? Ssortingng)! let CheckIndate:Ssortingng=(TempCulubDic.value(forKey: "chekin_date") as? Ssortingng)! ClubProfileView.ClubID=ClubId ClubProfileView.CheckInDate = CheckIndate // self.tabBarController?.tabBar.isHidden=true ClubProfileView.hidesBottomBarWhenPushed = true self.navigationController?.pushViewController(ClubProfileView, animated: true) } 
  @IBAction func nextbtnpreesd(_ sender: Any) { let myssortingng = "2" performSegue(withIdentifier: "MusicVC", sender: myssortingng) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let destination = segue.destination as? MusicVC{ if let song = sender as? Ssortingng{ destination.strlablevalie = song } } } 

// dans MusicVC créer une string comme:

  var strlablevalie:Ssortingng! 

Note: si nous utilisons un storyboard

Étape 1: Contrôleur principal:

  // table row which row was selected func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath!) { tableView.deselectRowAtIndexPath(indexPath, animated: true) println("You selected cell #\(indexPath.row)!") nextScreenRow = indexPath.row // get to the next screen self.performSegueWithIdentifier("dashboard_static_screen_segue", sender: self) } 

et alors;

  override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { if (segue.identifier == "dashboard_static_screen_segue") { var detailController = segue.destinationViewController as StaticScreens; detailController.screenNumber = nextScreenRow } }// end prepareForSegue 

Étape 2: Contrôleur de détail (StaticScreen)

 // set variable into your detail controller var screenNumber: NSInteger? println("selected row \(screenNumber!)")