2013-02-20 78 views
1

我的注释图像是第一次添加好后。每个注释都有一个带有数字的图像。当我滚动地图和方法“viewForAnnotation”是被称为(为第二次)结束,错误的图像被证明。它似乎是被退回错误注释...Mapview:注释图像错误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。

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

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

+0

你的意思是MKAnnotationView而不是VBAnnotationView? – Camus 2013-02-20 00:48:57

+0

嗨加缪,VBAnnotationView是我的自定义MKAnnotationView。我在这个问题上加了这个。 – 2013-02-20 00:52:23

回答

0

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

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

图像已被设置,当应用程序第一次运行。 AnnotationView包含一个图像。我目前所做的是每一个注释他自己的标识符。 – 2013-02-20 09:32:42

+0

这会起作用,但它破坏了使用可重用View的目的。如果你打算这样做,你可能只需要一个数组或视图字典。 – 2013-02-20 14:59:42