2012-03-21 30 views
0

我有一個關於MKPinAnnotationView的問題。首先,我輸入了引腳的座標,然後調用viewForAnnotation構建它們,並添加一個右鍵。MKPinAnnotationView - 在不同引腳中的不同動作

但我的問題是如何爲這些引腳選擇不同的操作?

當我尋找在NSLog的按鈕標籤,它總是顯示爲0每個管腳,所以我不能用標籤做到這一點。

這裏是按鈕的代碼,如果它意味着什麼:

for (int i=0;i<=[[mapview annotations]count];i++) { 
    pinView.tag = i ; 
    rightButton.tag=i; 
} 

回答

0

您不需要(也不應該)使用標籤。

相反,在操作方法,可以判斷選擇了哪個註解,然後執行基於該不同的邏輯。

您甚至不需要創建自己的操作方法。點擊標註按鈕時,地圖視圖將調用其calloutAccessoryControlTapped委託方法,該方法可爲您提供對註釋的引用(即view.annotation)。如果您決定使用委託方法,請從viewForAnnotation中刪除addTarget,並僅實施委託方法。

如果你想用你自己的操作方法,由於某種原因,你可以決定哪些註釋通過查看地圖視圖的selectedAnnotations屬性選擇。選定的註釋將位於索引0處(確保首先檢查數組的count不爲零)。


對於所有上述,看到這個問題的示例代碼:
How to keep data associated with MKAnnotation from being lost after a callout pops up and user taps disclosure button?