使用Swift和Storyboard在两个UIViewControllers之间传递数据

我使用下面的代码来selectUITableView在UIViewControllers之间传递数据

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"showRecipeDetail"]) { NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow]; RecipeDetailViewController *destViewController = segue.destinationViewController; destViewController.recipeName = [recipes objectAtIndex:indexPath.row]; } } 

如何使用swift和tableViewselect的数据做同样的事情?

我已经尝试了下面的方法来简单的传递正在工作
但是如何复制上面提到的情况。

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { var detailsVC = segue.destinationViewController as SecondViewController detailsVC.passedString = "hello" } 

这应该工作:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier == "showRecipeDetail" { var detailsVC = segue.destinationViewController as SecondViewController let indexPath = tableView.indexPathForSelectedRow() detailsVC.passedString = recipes![indexPath?row] //or try that if above doesn't work: detailsVC.passedString = recipes[indexPath?row] } } } 

这条线可能需要修改:

 destViewController?.destViewController.recipeName = recipes![i] 

这取决于你的属性是否可选(也许你必须删除?或!)

试试这个…如果你是第一个视图控制器是embedded导航控制器,你可以推didSelectRowAtINdexPath委托,如下所示的第二个视图控制器…

 func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { // Create a storyboard instance..... var storyBoard = UIStoryboard(name: "Main", bundle: nil) // Create a SecondViewController instance, from the storyboardID of the same. var seconVC = storyBoard.instantiateViewControllerWithIdentifier("seconViewControllerID") as SecondViewController seconVC.passedString = receipes[indexPath.row] as String self.navigationController?.pushViewController(secondVC, animated: true) }