Я пытаюсь отобразить пользовательский вид аннотации на виде карты (MKMapView), который отлично работает в приложении. Проблема заключается в том, что когда я переключаюсь между приложениями или переключаюсь между темным и светлым режимами, пользовательский вид аннотации возвращается к выводу аннотации по умолчанию, как показано ниже.
Цель развертывания: iOS 11
Работает на: iPhone XS MAX iOS 13.3
Версия Xcode: 11.3 (11C29)
Версия Swift: 5.0
private func addAnnotations(_ places : [QPPlaceDM]) {
mapView.removeAnnotations(myAnnotations)
var annotations = [MKPointAnnotation]()
for item in places {
let annotation = QPCustomAnnotaion()
annotation.title = item.name
annotation.coordinate = item.coordinates
annotation.image = item.category.pinImage
annotations.append(annotation)
}
myAnnotations = annotations
mapView.addAnnotations(myAnnotations)
}
.... ...
extension QPMainVC : MKMapViewDelegate {
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
if !(annotation is QPCustomAnnotaion) {
return nil
}
let annotationID = "AnnotationId"
var annotationView = mapView.dequeueReusableAnnotationView(withIdentifier: annotationID)
if annotationView == nil {
annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: annotationID)
annotationView?.canShowCallout = true
}
else {
annotationView?.annotation = annotation
}
let myCustomAnnotation = annotation as? QPCustomAnnotaion
annotationView?.image = myCustomAnnotation?.image
annotationView?.displayPriority = .required
return annotationView
}
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
guard let annotationLocation = view.annotation?.coordinate else { return }
var indexOfAnnotation = 0
for (index , item) in myAnnotations.enumerated() {
if annotationLocation.latitude == item.coordinate.latitude{
indexOfAnnotation = index
break
}
}
let indexPathOfMagorCell = IndexPath(row: indexOfAnnotation, section: 0)
placesCollection.scrollToItem(at: indexPathOfMagorCell, at: .centeredHorizontally, animated: true)
}
}
Правильно работает
После переключения приложения