Как предотвратить возврат пользовательских MKAnnotationViews к использованию цвета и изображения по умолчанию? - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть несколько MKMapViews на отдельных вкладках UITabBarController.Каждая карта использует пользовательские MKAnnotationViews для MKAnnotations и MKClusterAnnotations.Пользовательские MKAnnotationViews отображаются зеленым цветом со звездообразным глифом или зеленым с номером, если это для кластера.

Проблема заключается в том, что мои пользовательские MKAnnotationViews случайным образом возвращаются к отображению красного цвета по умолчанию с символом булавки.Когда я увеличу масштаб, виды начнут перерисовываться и будут правы.Я не смог последовательно воспроизвести проблему, но, кажется, это происходит, когда я ухожу от вкладки и возвращаюсь.

Есть ли способ принудительно перезагрузить представление карты, аналогичное reloadData () дляпредставление коллекции?Моя функция viewForAnnotation никогда не должна возвращать ноль, поэтому я не знаю, как это могло произойти.

 func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
     var view = mapView.dequeueReusableAnnotationView(withIdentifier: "CustomAnnotationView") as? CustomAnnotationView
     if view == nil {
         view = CustomAnnotationView(annotation: annotation, reuseIdentifier: "CustomAnnotationView")
     } else {
         view?.annotation = annotation
     }
     return view

     // code for the cluster annotations redacted
 }

1 Ответ

0 голосов
/ 14 ноября 2018

Проблема решена.Мне, очевидно, нужно было стилизовать маркеры в функции prepareForReuse на подклассах кластера.

override func prepareForReuse() {
    super.prepareForReuse()

    style()
}
...