title: How to let user to add custom annotation?
body: <p>I could not found any document, video or stackoverflow answer.</p>
  
  <p>Here is my problem. I created map and add into my custom MKAnnotation and MKAnnotationView.</p>
  
  <p>I want to let user to create custom pin and save to it's local via CoreData</p>
  
  <p>MyCustomAnnotation has same attributes which is title, subtitle, and coordinate.</p>
  
  <p>The first solution that I come up with put a button which creates a draggable pin to user location. </p>
  
  <p>But I need to get less complex, more sophistication solution.</p>
  
  <pre><code>private func addPins() {
      let list = PrivateLocations.shared.initLocations()
      for pin in list {
          map.addAnnotation(pin)
      }
  }
  
      func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
  
      if view.annotation is MKUserLocation { return }
      let views = Bundle.main.loadNibNamed("CustomCalloutView", owner: nil, options: nil)
      let customView = views?[0] as! CustomCalloutView
      customView.delegate = self
      customView.isUserInteractionEnabled = true
      customView.titleLabel.text = view.annotation?.title!
      customView.desc.text = view.annotation?.subtitle!
      customView.center = CGPoint(x: view.bounds.size.width / 2, y: -customView.bounds.size.height*0.52)
      view.addSubview(customView)
      map.setCenter((view.annotation?.coordinate)!, animated: true)
  }
  
      func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -&gt; MKAnnotationView? {
  
      if annotation is MKUserLocation {
          return nil
      } else {
          let annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: "CustomAnnotationView")
          annotationView.image = UIImage(named: "myImage")
          annotationView.canShowCallout = false
          return annotationView
      }
  }
  </code></pre>
  
  <p>And finally here is my CustomPin class :</p>
  
  <pre><code>var coordinate: CLLocationCoordinate2D
  var title: String?
  var subtitle: String?
  
  init(_ title: String, _ subtitle: String, _ coordinate: CLLocationCoordinate2D) {
      self.title = title
      self.subtitle = subtitle
      self.coordinate = coordinate
  }
  </code></pre>