2012-05-03 84 views
5

我有一個自定義註釋,它使用viewForAnnotation委託方法基於註釋的類型設置其圖像。我只使用1個註釋,表示汽車正在移動,並且想要在檢測到汽車正在移動和停止時更改圖像。除了刪除我的註釋並重新添加引起眨眼之外,我怎麼能解決這個問題?更改註釋圖像創建後

回答

10

無論您檢測到汽車狀態發生變化,都可以使用MKMapView實例方法viewForAnnotation:檢索註釋當前視圖。這與mapView:viewForAnnotation:代表方法不一樣。

獲得註釋的當前視圖後,您可以修改其屬性,包括image

還要確保mapView:viewForAnnotation:委託方法具有相同的確切條件,以根據汽車註釋的狀態設置image。你可能想把邏輯放在一個從兩個地方調用的通用方法中(狀態改變和委託方法),這樣代碼就不會被複制。

例如,在狀態變化,你可能有:

//carAnnotation is your id<MKAnnotation> object 
MKAnnotationView *av = [mapView viewForAnnotation:carAnnotation]; 
if (carAnnotation.isMoving) 
    av.image = [UIImage imageNamed:@"moving.png"]; 
else 
    av.image = [UIImage imageNamed:@"stopped.png"]; 

if聲明(或者你必須設置image任何邏輯)是一部分也應該在viewForAnnotation委託方法。

+0

不知道爲什麼這沒有得到upvote ..好的答案 – Sean