Question: I was able to move from one `ViewController` to another programmatically without any story board, now come the part where I need to transfer the data, in my `rootViewController`, I have data in this form:

```
var restaurants:[Restaurant] = [
          Restaurant(name: "Cafe Deadend",  image: "cafedeadend.jpg", isVisited: false),
          Restaurant(name: "Homei", image: "homei.jpg", isVisited: false) ]

```

And of course `Restaurant` is a class in my model section ....

Now in my rootcontroller i move to my other controller like this ......

```
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

        let detailView: DetailViewController = DetailViewController()

         detailView.restaurant = restaurants[indexPath.row]
        self.navigationController?.pushViewController(DetailViewController(), animated: false)

    }

```

And of course in my `DetailViewController` I have this

```
var restaurant = Restaurant()

```

But here when I try to show an image like this in `DetailViewController`, expecting the image name to come with the code in `RestaurantViewController` I get nil....

```
let imageHeader = UIImageView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
imageHeader.image = UIImage(named: self.restaurant.image)

```

I am always getting nil value for the image, where I should be getting the string name of image, can any one please guide where I have gone wrong and why the value is not getting transferred from one controller to other.

Answer: 
Your code has a problem in your `didSelectRowAt`, since you are not passing the previously created `DetailViewController` with a restaurant, but another newly-created `DetailViewController`, try this:

```
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  let detailView: DetailViewController = DetailViewController()
  detailView.restaurant = restaurants[indexPath.row]
  self.navigationController?.pushViewController(detailView, animated: false)
}

```

See the change on the `pushViewController` method? This should do it.
```
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
    let storyboard = UIStoryboard(name: "Main", bundle: nil) // change storyboard name here..
    let detailView = storyboard.instantiateViewController(withIdentifier: 
    "DetailViewController") as! DetailViewController // check View controller identifier
    detailView.restaurant = restaurants[indexPath.row]
    navigationController?.pushViewController(detailView, animated: true)

```

}