2016-08-04 36 views
1

Ich möchte wissen, wie ich meine annotation Titel zu aktualisieren, während ich es ziehen, weil alle annotation Eigenschaften get nur sind.Aktualisieren MKPointAnnotation Objekt beim Ziehen

-Code Ich habe try:

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, didChange newState: MKAnnotationViewDragState, fromOldState oldState: MKAnnotationViewDragState) { 

    switch (newState) { 
    case .starting: 
     //view.dragState = .dragging 
     print("dragging.....") 
    case .ending, .canceling: 
     // view.dragState = .none 
     let lat = view.annotation?.coordinate.latitude 
     let long = view.annotation?.coordinate.longitude 
     let coordinates = CLLocationCoordinate2D(latitude: lat!, longitude: long!) 
     print(" pin lat \(lat) long \(long)") 

     //Error here - title is get only property 
     view.annotation?.title = "New Location" 

    default: break 
    } 

} 

Antwort

2

Im Drag-Methode von MKMapViewDelegate, Kommentierung nur gelesen wird, so dass Sie didSelectAnnotationView Methode der MKMapViewDelegate verwenden können, weil vor ziehen wird es didSelectAnnotationView Methode aufrufen, für die eine selectedAnnotation Instanz deklarieren Eigenschaft des Typs MKPointAnnotation.

var selectedAnnotation: MKPointAnnotation? 

Verwenden Sie jetzt diese Eigenschaft in didSelectAnnotationView Methode.

func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) { 
    selectedAnnotation = view.annotation as? MKPointAnnotation 
} 

nun der Titel diese Anmerkung verwendet

func mapView(_ mapView: MKMapView, annotationView view: MKAnnotationView, didChange newState: MKAnnotationViewDragState, fromOldState oldState: MKAnnotationViewDragState) { 
    switch (newState) { 
     case .starting: 
      //view.dragState = .dragging 
      print("dragging.....") 
     case .ending, .canceling: 
      // view.dragState = .none 
      let lat = view.annotation?.coordinate.latitude 
      let long = view.annotation?.coordinate.longitude 
      let coordinates = CLLocationCoordinate2D(latitude: lat!, longitude: long!) 
      print(" pin lat \(lat) long \(long)") 
      self. selectedAnnotation?.title = "New Location" 
     default: break 
    } 

} 
+0

Dank Mann zu ändern !! es funktionierte. – ankit

+0

Willkommen Kumpel, Happy Coding :) –