针脚颜色不变

时间:2013-09-13 07:33:56

标签: ios mapkit

如果引脚的标题是“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;

}

1 个答案:

答案 0 :(得分:0)

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

与tableView一样重复使用单元格。


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

为不同的案例使用不同的重用标识符!

 static NSString *annotationIdentifier= ([annotation.title isEqualToString:@"HQ"]) ? @"HQ" : "OTHER";