MapView Σχολιασμός Επεξήγηση δράση όταν άνοιξε

ψήφοι
0

Έχω ένα MapView με πολλά σχόλια. Κάθε σχολιασμός έχει leftCalloutAccessoryView η οποία είναι μια κατηγορία UIViewController. Ο λόγος για αυτό είναι ότι θέλω κάθε σχολιασμού για να φορτώσει κάποια δεδομένα από το διακομιστή, και προσθέστε το αποτέλεσμα αυτών των δεδομένων με τον υπότιτλο σχολιασμό. Όλα αυτά λειτουργεί τέλεια, εκτός από το ότι δεν θέλω να φορτώσει όλα τα δεδομένα κατά την εκκίνηση της εφαρμογής μου, αλλά θέλω να την απομακρυσμένη κλήση να γίνει μόνο όταν η φούσκα επεξήγηση ανοίγει.

Ξέρει κανείς πώς μπορώ να το κάνω αυτό; Η viewWillload, viewDidLoad κλπ. δεν λειτουργούν σε αυτή την περίπτωση. Τυχόν παραδείγματα, καθώς;

Δημοσιεύθηκε 12/04/2010 στις 13:21
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
2

Θα λυθεί το πρόβλημα με την προσθήκη ενός παρατηρητή. Ο παρατηρητής στη συνέχεια, κάνει το πράγμα του και μετά από αυτό η επεξήγηση εμφανίζεται.

Κάτι είχα προβλήματα με είναι ότι δεν θα μπορούσα να ενημερώσετε τις πληροφορίες στο συννεφάκι επεξήγησης αφού η φούσκα εμφανίζεται. Ο μόνος τρόπος για να γίνει αυτό είναι να δημιουργήσετε τη δική σας φούσκα επεξήγηση (όπως το αντιλαμβάνομαι), το οποίο είναι κάτι που εγώ δεν αισθάνομαι σαν δεδομένο ότι έχω μια προθεσμία. Θα καθοριστεί ότι με την προσθήκη ενός επιπλέον UIView με μία άλφα πάνω του και ένα κείμενο «Λήψη δεδομένων θέσης ...». Απλά εμφανίζονται αυτή την άποψη όταν το πάτημα ενός θέση και όταν ο παρατηρητής γίνεται, έχω κρύψει την άποψη και πάλι (εκτός φυσικά από τη χρήση ενός animation).

Ελπίζω η απάντησή μου βοήθησε τους άλλους.

Κώδικας:

[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