title: Use MKAnnotation to move on the next View Controller
body: <p>i'm new in swift programming. I want when user tap a MKAnnotationPoint to move on the next view controller. The way i do it now is by pressing the Button "Button" as you see at the top of image1. My code:</p>
  
  <p><strong>mapViewController.swift</strong></p>
  
  <pre><code>import UIKit
  import MapKit
  import CoreLocation
  
  class mapViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, CLLocationManagerDelegate, MKMapViewDelegate {
  
      // MARK: Properties
      let pin = UIImage(named: "pin")
      var annotationTouched = String()
      var viaSegue = MKAnnotationView()
  
      // MARK: MAP
      @IBOutlet weak var mapView: MKMapView!
  
  
      let coreLocationManager = CLLocationManager()
      let locations = LocationList().Location
  
      // all locations will be stored on this array
      func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
      {
          let location = locations [0]
  
          //map zoomed
          let span:MKCoordinateSpan = MKCoordinateSpanMake(0.003, 0.003)
          //users location
          let myLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)
  
          let region:MKCoordinateRegion = MKCoordinateRegionMake(myLocation, span)
          mapView.setRegion(region, animated: true)
  
          self.mapView.showsUserLocation = true
      }
  
      // func to change red pin to my custom pin
      func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -&gt; MKAnnotationView?
      {
  
          if let annotation = annotation as? Locations{
              if let view = mapView.dequeueReusableAnnotationView(withIdentifier: annotation.identifier){
                  return view
              }else{
                  let view = MKAnnotationView(annotation: annotation, reuseIdentifier: annotation.identifier)
                  view.image = pin
                  view.isEnabled = true
                  view.canShowCallout = true
                  //view.leftCalloutAccessoryView = UIImageView(image: pin)
                  let btn = UIButton(type: .detailDisclosure)
                  view.rightCalloutAccessoryView = btn
  
                  return view
              }
          }
          return nil
      }
  
      // assigning the pin that is selected in the map to the annotation touched variable
      func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView)
      {
          if let annotation = view.annotation as? Locations {
              annotationTouched = annotation.title ?? "No title"
          }
      }
  
  
      override func viewDidLoad()
      {
          super.viewDidLoad()
  
          coreLocationManager.delegate = self
          //desired accuracy is the best accuracy, very accurate data for the location
          coreLocationManager.desiredAccuracy = kCLLocationAccuracyBest
          //request authorization from the user when user using my app
          coreLocationManager.requestWhenInUseAuthorization()
  
          coreLocationManager.startUpdatingLocation()
  
          mapView.delegate = self
  
          mapView.addAnnotations(locations)
      }
  
      // passing the name of the place on the next view controller which is the review view controller (RateViewController)
      override func prepare(for segue: UIStoryboardSegue, sender: Any?)
      {
          let destViewController : RateViewController = segue.destination as! RateViewController
          destViewController.placeLabelString = annotationTouched
  
      }
  
  
  }
  </code></pre>
  
  <p><strong>Locations.swift</strong></p>
  
  <pre><code>import UIKit
  import MapKit
  
  class Locations: NSObject, MKAnnotation {
      // required coordinate, title, and the reuse identifier for this annotation
      var identifier = "locations"
      var title: String?
      var coordinate: CLLocationCoordinate2D
      //initializer taking a name, a latitude and longitude to populate the title and coordinate for each instance of this object
      init(name:String,lat:CLLocationDegrees,long:CLLocationDegrees){
          title = name
          coordinate = CLLocationCoordinate2DMake(lat, long)
      }
  
  }
  // Creating the list of the places that will be pinned in map
  class LocationList: NSObject {
      var Location = [Locations]()
      override init(){
          Location += [Locations(name: "Dio Con Dio", lat: 40.590130, long: 23.036610)]
          Location += [Locations(name: "Paradosiako - Panorama", lat: 40.590102, long:23.036180)]
          Location += [Locations(name: "Veranda",  lat: 40.607740, long: 23.103044)]
          Location += [Locations(name: "Markiz",  lat: 40.634252, long: 22.936276)]
          Location += [Locations(name: "Moi Lounge Bar",  lat: 40.653481, long: 22.994131)]
          Location += [Locations(name: "Boulevard Lounge Bar",  lat: 40.658462, long: 22.983198)]
          Location += [Locations(name: "Ernést Hébrard",  lat: 40.631829, long: 22.941014)]
          Location += [Locations(name: "Tribeca - All Day &amp; Night Bar",  lat: 40.631029, long: 22.942396)]
  
      }
  }
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/xFadC.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/xFadC.png" alt="image1"></a></p>
  
  <p><a href="https://i.stack.imgur.com/C7XiW.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/C7XiW.png" alt="image2"></a></p>