MapView एनोटेशन कॉल आउट कार्रवाई जब खोला

वोट
0

मैं कई एनोटेशन के साथ एक MapView है। हर एनोटेशन एक leftCalloutAccessoryView जो एक UIViewController वर्ग है। इस का कारण यह है कि मैं हर एनोटेशन सर्वर से कुछ डेटा लोड, और एनोटेशन उपशीर्षक करने के लिए कि डेटा के आधार पर जोड़ना चाहते है। यह सब पूरी तरह से काम करता है, सिवाय इसके कि मुझे लगता है कि सभी डेटा लोड करने के लिए जब मेरे एप्लिकेशन शुरू कर दिया है नहीं करना चाहती, लेकिन मैं केवल किया जाना कॉलआउट बुलबुला खोला है दूरस्थ कॉल करना चाहते हैं।

किसी को भी पता है मैं यह कैसे कर सकते हैं? viewWillload, viewDidLoad ect। इस मामले में काम नहीं करते। किसी भी उदाहरण के रूप में अच्छी तरह से?

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

और बस के बाद @ synthesize के इस डाल:

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