为什么当我按下AnnotationView时图像消失?

时间:2012-11-09 12:05:12

标签: ios uibutton uiimage mkannotation mkpinannotationview

在我的MapView中有多个annotationView,每个都有自己的图像,有时当我按下图像时,它会消失,如果没有重新加载viewController,它就永远不会回来。为什么会这样?

 - (MKAnnotationView *)mapView:(MKMapView *)mapview viewForAnnotation:(id 
    <MKAnnotation>)annotation
    {
         if ([annotation isKindOfClass:[AnnotationView class]]) {

               return nil;
         }

         if ([annotation isKindOfClass:[AnnotationCustom class]]){


            static NSString* AnnotationIdentifier = @"AnnotationIdentifier";

           MKPinAnnotationView *annotationView = (MKPinAnnotationView*) [mapView 
                   dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];

           annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation

                             reuseIdentifier:AnnotationIdentifier];

        if ([self.nameTable isEqualToString:@"Movies"]){
            if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone){

                  annotationView.image = [UIImage imageNamed:@"iphone_movies.png"];


            }else{
                  annotationView.image = [UIImage imageNamed:@"ipad_movies.png"];

            }


     }else if ([self.nameTable isEqualToString:@"Food_Drink"]){
             if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPhone){
                 annotationView.image = [UIImage imageNamed:@"iphone_foodDrink.png"];


             }else{
                 annotationView.image = [UIImage imageNamed:@"ipad_foodDrink.png"];


             }
     }else if (......){
              //same procedure for all annotationView

     }


    UIButton *detailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];

    annotationView.rightCalloutAccessoryView=detailButton;

    annotationView.canShowCallout = YES;
    annotationView.draggable = YES;

    return annotationView;
    }

缺少什么?

2 个答案:

答案 0 :(得分:1)

你在做什么吗

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view

我还注意到你没有为注释视图设置注释。设置注释视图时,您还应该

annotationView.annotation = annotation;

答案 1 :(得分:0)

我替换了

 MKPinAnnotationView *annotationView = (MKPinAnnotationView*) [mapView 
               dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];

 annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation
 reuseIdentifier:AnnotationIdentifier];

  MKAnnotationView *annotationView = (MKAnnotationView*) [mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
  annotationView = [[MKAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];