Mapview:viewForAnnotation之后的注释图像错误

时间:2013-02-20 00:05:58

标签: ios ios5 ios6

我的Annotations上的图片是第一次添加好的。每个注释都有一个带有数字的图像。当我滚动地图并调用方法“viewForAnnotation”(第二次)并显示错误的图像时..似乎返回了错误的注释...

ViewAnnotation方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
static NSString *identifier = @"pin";
VBAnnotationView *view = (VBAnnotationView *)[self.MapView dequeueReusableAnnotationViewWithIdentifier:identifier];
if (view == nil) {
    view = [[VBAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
}
return view; }

请注意,VBAnnotationView是我的自定义MKAnnotationView。

如果“view”不是nil,则“dequeueReusableAnnotationViewWithIdentifier”找到的视图将返回错误的图像。当我注释掉检查“view == nill”时,所有注释上的图像都是正确的。

为了优化,如果注释已经存在,我会检查方法“viewForAnnotation”。删除检查时是否已存在注释,图像将正确显示。

1 个答案:

答案 0 :(得分:0)

dequeueReusableAnnotationViewWithIdentifier不知道你的注释的“正确”图像是什么...它只是给你一个使用..一旦你得到它,你仍然需要配置它,告诉它注释它是什么为...

if (view == nil) {
    view = [[VBAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
}
else view.annotation=annotation;