I know, I know this has been asked a *lot* of times. I also found [this question](https://stackoverflow.com/questions/26456989/how-do-i-create-a-segue-that-can-be-called-from-a-button-that-is-created-program) but the solution it suggested did not work for me.

I am just trying to build an app to demonstrate how to use those things in `UIKit` (in case I want to use them later on. I can just copy the code). 

I have created a View Controller with a table view in it. I wrote a class called `PrototypeTableController` to act as the view controller class for the view controller I created in the storyboard. 

When the user taps on one of the cells, I want another view controller to show, called `Prototype Table Content`. And different text will be shown if you tap on different cells.

In the storyboard, it's like this:

[![enter image description here](https://i.stack.imgur.com/j0cUp.png)](https://i.stack.imgur.com/j0cUp.png)

The text of the label in `Prototype Table Content` will be different when the user taps on a different cell. This means I need to send data from one view controller to another.

The post mentioned above suggested that I should give the segue an identifier, so I did:

[![enter image description here](https://i.stack.imgur.com/RvlPW.png)](https://i.stack.imgur.com/RvlPW.png)

Here is my code:

View controller class for the table view:

```
class PrototypeTableController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    let data = ["Cell1", "Cell2", "Cell3", "Cell4", "Cell5"]
    let contents = ["Hello", "Nice", "OMG", "Jesus", "Peace"]
    var content: String?

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = UITableViewCell()
        cell.textLabel?.text = data[indexPath.row]
        return cell
    }

    func tableView(tableView: UITableView, titleForFooterInSection section: Int) -> String? {
        return "This is a prototype table view created by Sweeper"
    }

    func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return "my table"
    }

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        content = contents[indexPath.row]
        tableView.deselectRowAtIndexPath(indexPath, animated: true)
        performSegueWithIdentifier("showContent", sender: tableView)
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showContent" {
            let destination = segue.destinationViewController as! PrototypeTableContentViewController
            destination.contentString = content
        }
    }
}

```

View controller class for `Prototype Table Content` view:

```
class PrototypeTableContentViewController: UIViewController {
    @IBOutlet var tableContent: UILabel!
    var contentString: String?

    override func viewDidLoad() {
        super.viewDidLoad()
        tableContent.text = contentString
    }
}

```

I think I did all the things suggested in the post mentioned above. I added an identifier, I called `performSegueWithIdentifier`
, I also deselected the cell after the tapping.

However, it just doesn't go to the other view controller! It stays on the same controller! Like this:

[![enter image description here](https://i.stack.imgur.com/Y4NFV.png)](https://i.stack.imgur.com/Y4NFV.png)