仅通过子类MKMapView自定义MKAnnotationView?
问题描述:
我都试过这样(的MKMapView代表):仅通过子类MKMapView自定义MKAnnotationView?
-(void) mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
for (MKAnnotationView *annotationView in views)
{
annotationView.image = [UIImage imageNamed:@"itemType2.png"];
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
annotationView.canShowCallout = YES;
}
}
,这(上具有的MKMapView的VC):
[self.theMapView addAnnotations:annotationsArray];
for (id <MKAnnotation> itemAnnotation in self.theMapView.annotations)
{
MKAnnotationView *itemAnnotationView = [self.theMapView viewForAnnotation:itemAnnotation];
itemAnnotationView.image = [UIImage imageNamed:@"itemType2.png"];
itemAnnotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
itemAnnotationView.canShowCallout = YES;
//[self.theMapView setNeedsDisplay];
}
内部消除对改变MKAnnotationView的外观的任何成功,他们出现作为简单的红色别针没有披露按钮或任何东西....
是改变他们通过创建一个subclassed MKMapView和使用 - (MKAnnotationView *)viewForAnnotation:(ID < MKAnnotation> )注释???我觉得创建一个额外的子类只是为了改变注释是不必要的,为什么上面的方法不工作?
答
您不需要任何子类就可以在MKAnnotationView
上设置这些属性。
您需要实施viewForAnnotation
代表方法并在那里设置属性。
查看this answer的代码示例。
该示例唯一的变化是使用MKAnnotationView
而不是MKPinAnnotationView
。