iOS 5.0 didSelectAnnotationView - PullRequest
       1

iOS 5.0 didSelectAnnotationView

2 голосов
/ 21 ноября 2011

Немного разочарования, пытаясь получить didSelectAnnotationView для вызова ....

Моя ситуация: Используя контроллер TabBar, мое приложение переключается с представления INDEX на представление MAP (вкладка INDEX на вкладку MAP), когда выбран один из элементов в индексе. Нет проблем с тем, чтобы это работало под 4.3, но интересная проблема под 5.0.

Если я ранее выбрал вкладку MAP (как в представлении MAP загружено), всплывающая подсказка «пузырь» появляется, чтобы показать выбранную точку ... нет проблем. Но если я не выбрал вкладку MAP до выбора одного из элементов в списке индексов, он загружает представление MAP, но не вызывает метод didSelectAnnotationView.

Это происходит только один раз ... как, например, после загрузки представления MAP все реагирует, как и ожидалось.

И снова, согласно 4.3, didSelectAnnotationView вызывается каждый раз, независимо от того, было ли загружено представление MAP ранее или нет.

Есть мысли ...?

Что касается моего кодирования, я загружаю все аннотации в методе viewDidLoad, и viewWillAppear выглядит так:

//Run through all annotations
for (id<MKAnnotation> annotation in mapView.annotations) {

    //Check if that annotation is the selected one
    if (annotation.coordinate.longitude == mylongitude) {
        [[mapView viewForAnnotation:annotation] setHidden:FALSE];
        [mapView selectAnnotation:annotation animated:YES];
    }
}

1 Ответ

1 голос
/ 30 мая 2012

(моя репутация еще недостаточно высока, чтобы оставить комментарий)

  1. Сначала убедитесь, что ваша аннотация найдена в вашем проблемном сценарии - установите точку останова в выражении IF, чтобы подтвердить.

Другие примечания:

  • Если аннотация, которую вы пытаетесь выбрать, находится за пределами экрана, метод выбора не будет иметь никакого эффекта (в соответствии сдокументация).Аннотация, безусловно, будет доступна, но, вероятно, в этом случае с ней не будет связано представление.

  • Убедитесь, что аннотация еще не выбрана при вызове select.. возможно, попробуйте отменить выбор всех аннотаций, прежде чем идти в цикл.

  • Не уверен, почему вы вызываете 'setHidden' в представлении аннотаций, но я бы удалил все биты, которыеПопробуйте скрыть или показать аннотации просмотров.По большей части, это зависит от MKMapView, чтобы иметь дело с деталями самих представлений аннотации (с точки зрения их отображения, позиционирования и т. Д.)

...