为啥有时我按下 AnnotationView 时图像消失了?

Posted

技术标签:

【中文标题】为啥有时我按下 AnnotationView 时图像消失了?【英文标题】:Why when I press the AnnotationView sometime the image disappear?为什么有时我按下 AnnotationView 时图像消失了? 【发布时间】:2012-11-09 12:05:12 【问题描述】:

在我的 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;
    

缺少什么?

【问题讨论】:

【参考方案1】:

你在做什么吗

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

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

annotationView.annotation = annotation;

【讨论】:

您能否编辑您的原始帖子以将整个代码包含在 viewForAnnotation 方法中?【参考方案2】:

我换了

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

【讨论】:

以上是关于为啥有时我按下 AnnotationView 时图像消失了?的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我按下返回按钮时我的程序崩溃

如果我按下“全部清除”按钮,为啥我的前台服务会停止

为啥当我按下刷新时,选择中的下拉箭头会改变外观和移动位置?

Socket Accept() 阻塞,直到我按下一个键

当我按下快速播放按钮时,声音播放失败

为啥我按了下键盘上的F12浏览器里的字就变的好小了啊?