我想了解如何在拖动时更新我的annotation
标题,因为所有annotation
属性仅为get
。
我试过的代码:
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
}
}
答案 0 :(得分:3)
在MKMapViewDelegate
的拖动方法中,注释是只读的,因此您可以使用didSelectAnnotationView
的{{1}}方法,因为在拖动之前它会调用MKMapViewDelegate
方法,因为该声明didSelectAnnotationView
类型的一个selectedAnnotation
实例属性。
MKPointAnnotation
现在在var selectedAnnotation: MKPointAnnotation?
方法中使用此属性。
didSelectAnnotationView
现在更改标题使用此注释
func mapView(mapView: MKMapView, didSelectAnnotationView view: MKAnnotationView) {
selectedAnnotation = view.annotation as? MKPointAnnotation
}