iOS 5.0 сделал SelectAnnotationView

Немного разочарования, пытаясь вызвать 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];
    }
}

person user1057884    schedule 21.11.2011    source источник
comment
У вас есть решение? Я сталкиваюсь с той же проблемой...   -  person Minakshi    schedule 30.11.2011


Ответы (1)


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

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

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

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

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

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

person Brian Tunning    schedule 30.05.2012