繁体   English   中英

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

[英]Why when I press the AnnotationView sometime the image disappear?

在我的MapView中,有多个注释视图,每个注释视图都有自己的图像,有时候我按该图像时,它消失了,而且如果不重新加载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;
    }

缺了点什么?

你在做什么吗

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

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

annotationView.annotation = annotation;

我更换了

 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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM