MapView annotatie Bijschrift actie bij het openen

stemmen
0

Ik heb een Mapview met diverse aantekeningen. Elke annotatie heeft een leftCalloutAccessoryView dat is een UIViewController klasse. De reden hiervoor is dat ik wil dat elke annotatie om sommige gegevens van de server te laden, en voeg het resultaat van die gegevens aan de annotatie de ondertiteling. Dit alles werkt perfect, behalve dat ik wil niet al die gegevens laden wanneer mijn aanvraag wordt gestart, maar ik wil naar de externe oproep om alleen worden gedaan wanneer de callout bel wordt geopend.

Weet iemand hoe ik dit kan doen? De viewWillload, viewDidLoad ect. werken niet in dit geval. Elke voorbeelden ook?

De vraag is gesteld op 12/04/2010 om 13:21
bron van user
In andere talen...                            


1 antwoorden

stemmen
2

Ik loste het probleem het toevoegen van een waarnemer. De waarnemer doet dan zijn ding en daarna het bijschrift verschijnt.

Iets wat ik had problemen met is dat ik de informatie in de callout bel niet konden worden bijgewerkt na de bubble wordt getoond. De enige manier om dit te doen is om uw eigen callout bel te maken (zoals ik het begrijp), dat is iets wat ik niet het gevoel dat gezien het feit dat ik een deadline. Ik bevestigde dat door het toevoegen van een extra UIView met een alfa op en een tekst "Getting locatiegegevens ...". Ik gewoon opdagen die opvatting bij het indrukken van een locatie en wanneer de waarnemer wordt gedaan, verberg ik de mening weer (natuurlijk met behulp van een animatie).

Hoop dat mijn antwoord geholpen anderen.

Code:

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

Nog enkele code:

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

En zet deze net na de @ synthetiseren's:

NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";
antwoordde op 19/04/2010 om 19:54
bron van user

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