0

如果图钉的标题是“HQ”,我创建了一个 if-then 语句来显示一个紫色图钉。绿色引脚正确显示。有谁知道为什么我的紫色别针的别针颜色仍然是红色的?

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

    {
        static NSString *annotationIdentifier=@"annotationIdentifier";

        MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [self.mapView dequeueReusableAnnotationViewWithIdentifier:annotationIdentifier];

        if(annotationView)
        {
            annotationView.annotation = annotation;
        }
        else
        {
            annotationView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annotationIdentifier];
            if([[annotationView.annotation title] isEqualToString:@"HQ"])
            {

                //The pin for the HQ should be purple
                annotationView.pinColor = MKPinAnnotationColorPurple;
                [annotationView setAnimatesDrop:YES];

            }
            else
            {
                //All other new pins should be "green" by default
                annotationView.pinColor = MKPinAnnotationColorGreen;
                annotationView.canShowCallout = YES;
                annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
                [annotationView setAnimatesDrop:YES];

            }
        }


        return annotationView;

    }

    return nil;

}
4

1 回答 1

0

地图重用注释视图(或提供这样做)

与 tableView 相同的单元格重用。


现在在初始化时您设置了引脚颜色,但在重用时您没有。所以一个针总是相同的颜色。

对不同的情况使用不同的重用标识符!

 static NSString *annotationIdentifier= ([annotation.title isEqualToString:@"HQ"]) ? @"HQ" : "OTHER";
于 2013-09-13T07:40:41.470 回答