Действие MapView Аннотация выноски при открытии

голоса
0

У меня есть MapView с несколькими примечаниями. Каждая аннотация имеет leftCalloutAccessoryView, который является классом UIViewController. Причина этого заключается в том, что я хочу, чтобы каждый аннотаций, чтобы загрузить некоторые данные с сервера, и добавить результат этих данных в аннотации подзаголовок. Это все работает отлично, за исключением того, что я не хочу, чтобы загрузить все эти данные при запуске моего приложения, но я хочу удаленный вызов быть сделано только тогда, когда выноска пузырь открыт.

Кто-нибудь знает, как я могу это сделать? ViewWillload, viewDidLoad ЭСТ. не работает в этом случае. Любые примеры, а?

Задан 12/04/2010 в 13:21
источник пользователем
На других языках...                            


1 ответов

голоса
2

Я решил проблему, добавив наблюдатель. Наблюдатель затем делает свое дело и после того, что выноска показывает вверх.

Что-то у меня были проблемы с в том, что я не мог обновить информацию в выноски пузыре после того, как пузырек показано на рисунке. Единственный способ сделать это, чтобы создать свой собственный выноски пузырь (как я понимаю), что-то я не чувствую, учитывая, что у меня есть крайний срок. Я установил, что путем добавления дополнительного UIView с альфа на нем и текст «Получение данных о местоположении ...». Я просто показать, что вид при нажатии на месте и, когда наблюдатель будет сделано, я снова скрыть вид (от курса с помощью анимации).

Надеюсь, что мой ответ помог другим.

Код:

[pin addObserver:self
      forKeyPath:@"selected"
         options:NSKeyValueObservingOptionNew
         context:GMAP_ANNOTATION_SELECTED];

Еще немного кода:

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context{

    NSString *action = (NSString*)context;

    MKAnnotationView *annotationView = [(MKAnnotationView*)object retain];
    BikeAnnotation *bike = [[annotationView annotation] retain];

    if([action isEqualToString:GMAP_ANNOTATION_SELECTED] && [[bike _stationType] intValue] != 5 && [[bike _stationType] intValue] != 6){
        BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
        if (annotationAppeared) {
            NSLog(@"Annotation selected");
        else {
            NSLog(@"annotation deselected");
        }
    }
}

И поставить это только после того, как @ синтезируют-х:

NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";
Ответил 19/04/2010 в 19:54
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more