A
и B
- это различные виды MKMarkerAnnotationView
классов.В моем MapViewController я регистрирую A
следующим образом:
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
mapView.register(A.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultAnnotationViewReuseIdentifier)
for annotation in annotations {
mapView.addAnnotation(annotation)
}
}
У меня есть UISwitch
, который я хочу использовать для изменения зарегистрированного AnnotationView с A
на B
.
@IBAction func didToggleSwitch(_ sender: Any) {
mapView.register(B.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultAnnotationViewReuseIdentifier)
// remove all annotations
mapView.removeAnnotations(mapView.annotations)
//populate all annotations
for annotation in annotations {
mapView.addAnnotation(annotation)
}
}
Зарегистрированный вид не обновляется.Есть идеи, почему?
Редактировать: я заметил, что когда я уменьшаю и перемещаю карту, некоторые аннотации обновляются до нового AnnotationView, а некоторые нет.Я подозреваю, что это связано с использованием reuseIdentifier
.Как получить все аннотации для соответствия новому AnnotationView?