0

I was add the target in my button

cell.foo.tag = indexPath.row
cell.foo.addTarget(self, action: "bar:", forControlEvents:UIControlEvents.TouchUpInside)

But I don't know how to call view controller with parameters

func bar(sender: UIButton!) {
   // ?
}
Munkhbold Enkhtur
  • 558
  • 1
  • 7
  • 15

1 Answers1

1

You have to manually by using sender tag

func bar(sender: UIButton!) {

    if sender.tag == 0 {

        self.performSegueWithIdentifier("viewcontroller1", sender: tableView)
    }
    else if sender.tag == 1 {

        self.performSegueWithIdentifier("viewController2", sender: tableView)
    }
    //...... and so on
}

And implement following method

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

    if segue.identifier == "viewController1" {

        let indexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()!
        let detailVC = segue.destinationViewController as ViewController1
        detailVC.item = items[indexPath.row] as Item // Pass your data
    }
    else if segue.identifier == "viewController2" {


    }
    //...... and so on
}

Or if you want to navigate manually from button event then

func bar(sender: UIButton!) {

    if sender.tag == 0 {

        let indexPath:NSIndexPath = self.tableView.indexPathForSelectedRow()!
        let detailVC = self.storyboard?.instantiateViewControllerWithIdentifier("view1SegueIdentifier") as! ViewController1 // view1SegueIdentifier -> assign it from storyboard
        detailVC.item = items[indexPath.row] as Item // Pass your data
        self.navigationController!.pushViewController(detailVC, animated:true)
    }
    else if sender.tag == 1 {


    }
    //...... and so on
}
VRAwesome
  • 4,721
  • 5
  • 27
  • 52