acțiune MapView Adnotarea înștiințări atunci când este deschis

voturi
0

Am o mapview cu mai multe adnotări. Fiecare adnotare are un leftCalloutAccessoryView care este o clasă UIViewController. Motivul pentru aceasta este că vreau ca fiecare adnotare pentru a încărca unele date de pe server, și se adaugă rezultatul acestei date subtitlului adnotată. Acest toate funcționează perfect, cu excepția faptului că nu vreau să se încarce toate aceste date, atunci când este pornit aplicația mea, dar vreau să apel la distanță pentru a se face numai în cazul în care bula înștiințări este deschis.

Stie cineva cum pot face acest lucru? ViewWillload, viewDidLoad ect. nu funcționează în acest caz. Orice exemple la fel de bine?

Întrebat 12/04/2010 la 13:21
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
2

Am rezolvat problema adăugarea unui observator. Observatorul face apoi lucru și după aceea înștiințarea apare.

Am avut ceva probleme cu este că nu am putut actualiza informațiile din bula înștiințărilor după ce este afișat bula. Singura modalitate de a face acest lucru este de a crea propriul bule înștiințărilor (după cum am înțeles), care este ceva ce nu am simtit ca avand in vedere ca am un termen limită. Am stabilit că, prin adăugarea unei UIView în plus, cu un alfa pe ea și un text „Obținerea de date de locație ...“. Am arată doar în sus acest punct de vedere, atunci când apăsați o locație și când observatorul se face, am ascunde din nou punctul de vedere (în afara cursului, folosind o animație).

Sper că răspunsul meu a ajutat pe alții.

Cod:

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

Unele mai mult cod:

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

Și a pus acest lucru doar după @ sintetiza anii:

NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";
Publicat 19/04/2010 la 19:54
sursa de către utilizator

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