2013-02-20 75 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