MapView Anotace Popisek akci při otevření

hlasů
0

Mám MapView s několika poznámkami. Každý anotace má leftCalloutAccessoryView což je třída UIViewController. Důvodem je to, že chci každý anotace načíst některé údaje ze serveru a přidat výsledek těchto údajů do anotace titulků. To vše funguje perfektně, kromě toho, že nechci, aby nahrát všechna data, když se začala moje app, ale chci do vzdáleného volání je třeba provádět pouze při otevření popisku bubliny.

Ví někdo, jak mohu udělat? ViewWillload, viewDidLoad atd. nefungují v tomto případě. Nějaké příklady stejně?

Položena 12/04/2010 v 13:21
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

jsem vyřešil problém s přidáním pozorovatele. Pozorovatel pak dělá svou věc, a po tom callout ukáže.

Něco, co jsem měl problémy s je, že jsem nemohl aktualizovat informace v popisku bubliny po zobrazí se bublina. Jediný způsob, jak to udělat, je vytvořit si vlastní popisku bubliny (jak jsem pochopil), což je něco, co jsem neměl pocit, že vzhledem k tomu, že mám termín. Opravil jsem, že tím, že přidá další UIView s alfa na něj a textem „Získání dat o poloze ...“. Jen jsem ukázat tento názor při stisknutí s polohou a když je pozorovatel udělal, jsem opět skrýt zobrazení (mimo kurs pomocí animace).

Doufat, že moje odpověď pomohl ostatním.

Kód:

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

Některé další kód:

- (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");
        }
    }
}

A dát to krátce poté, co @ syntetizovat to:

NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";
Odpovězeno 19/04/2010 v 19:54
zdroj uživatelem

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