I was using below code to selected UITableView to pass data between UIViewControllers
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
Try this... If you're first view controller is embedded inside Navigation Controller, you can push the second view controller on didSelectRowAtINdexPath delegate, as below...
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)
}
This should work:
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]
}
}
}
This line could require amendments:
destViewController?.destViewController.recipeName = recipes![i]
it depends is you properties optional or not (maybe you have to remove ? or !)