2010-03-04 13 views
5

मैं एक सुंदर सीधा कस्टम मानचित्र एनोटेशन व्यू और कॉलआउट का उपयोग करने की कोशिश कर रहा हूं - एनोटेशन व्यू जब मैं इसे बनाता हूं, तो बस यूआईएममेज व्यू को एक सबव्यूव के रूप में जोड़ता है। यह ठीक काम करता है।एनकेमैटकिट अपवाद देखने पर CanShowCallout का उपयोग करते समय

हालांकि, जब मैं एनोटेशन व्यू पर CanShowCallout को कॉल करता हूं, तो दृश्य को वापस करने के तुरंत बाद मैपकिट में एक अपवाद फेंक दिया जाता है। ढेर के अंत लगता है:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    if (! [annotation isKindOfClass:[MyAnnotation class]]) 
     return nil; 

    MyAnnotationView *useView = (MyAnnotationView *)[myMapView dequeueReusableAnnotationViewWithIdentifier:@"resuseview"]; 
    if (useView == nil) 
    { 
     useView = [[[MyAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"resuseview"] autorelease]; 
     useView.canShowCallout = YES; // if commented out view appears just fine 
    } 
    else 
    { useView.annotation = annotation; } 

    return useView; 
} 

कोड में बताया गया है, एनोटेशन दृश्य ठीक काम करता है के रूप में - जब तक मैं canShowCallout जोड़ने, तो यह दुर्घटनाओं:

#0 0x94e964e6 in objc_exception_throw 
#1 0x01e26404 in -[MKOverlayView _addViewForAnnotation:] 
#2 0x01e22037 in -[MKOverlayView _addViewsForAnnotations:animated:] 
#3 0x01e1ddf9 in -[MKOverlayView showAddedAnnotationsAnimated:] 
#4 0x01df9c0e in -[MKMapView _showAddedAnnotationsAndRouteAnimated:] 
#5 0x01e0371a in -[MKMapView levelView:didLoadTile:] 

मेरे viewForAnnotation बहुत सरल है पहली बार नक्शा देखने को मिलता है।

उत्तर

13

जवाब पता चला कि MyAnnotation (जो MKAnnotation प्रोटोकॉल लागू करता है) दो वैकल्पिक प्रोटोकॉल तरीकों को लागू नहीं किया जा करने के लिए:

- (NSString *)subtitle; 
- (NSString *)title; 

क्योंकि मैं एक पूरी तरह से कस्टम कॉलआउट की योजना बनाई थी, मुझे नहीं लगता था मैं इन्हें परिभाषित करने के लिए आवश्यक - और कॉल स्टैक अपरिचित चयनकर्ताओं को नहीं दिखाया।

साथ ही, मैं इन दो बस शून्य वापस जाने के लिए लागू किया है, लेकिन पाया गया कि एक टिप्पणी के लिए क्रम में वास्तव में एक कॉल आउट title विधि को सक्रिय (कम से कम) चाहिए एक गैर शून्य मान, वरना कॉल आउट नहीं किया जाएगा प्रस्तुत किया।

+0

धन्यवाद केंडल –

संबंधित मुद्दे