2010-06-01 81 views
4

任何人都可以幫我解決如何使用iphone註釋針和按鈕

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 

方法的問題。

我試圖告訴我的項目appart上的註釋引腳,我無法弄清楚如何。 每個引腳都有一個公開按鈕,但我無法弄清楚程序將如何知道正在按下哪個引腳按鈕。

回答

2

你可以在這裏使用一堆不同的技巧。

例如,你可以繼續伊娃每個annotationView和做到這一點:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 
    if (view == myFirstAnnotationView) { 
    //do something 
    } 
    if (view == mySecondAnnotationView) { 
    //do something 
    } 
    if (view == myThirdAnnotationView) { 
    //do something 
    } 
} 

或者,您可以使用註釋視圖的標籤值。

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { 
    if ([view.tag [email protected]"one"]) { 

    } 
    if ([view.tag isEqual[email protected]"two"]) { 

    } 
} 

或者,您可以繼承MKAnnotationView以向其添加一些行爲。

- (void)mapView:(MKMapView *)mapView annotationView:(MyMKAnnotationViewSubclass *)view calloutAccessoryControlTapped:(UIControl *)control { 
[view doAMethodIMadeWhenISubclassed]; 
} 

沒有,這些是一個完整的解決方案,這將是很難提供一個沒有尤爲明顯瞭解您的應用程序而設計的,但他們都有一個共同特點是什麼改變了annotationView你將它添加到地圖前以便在委託回調發生後決定要做什麼。我希望這會讓你走上正確的道路。

+0

我想出瞭如何去我已經創建的詳細視圖,但我想知道如果你能告訴我如何在沒有任何if語句的情況下分開引腳。我怎麼知道哪個按鈕被按下? – alecnash 2010-06-02 00:10:14

+0

謝謝,告訴你實話,我發現使用按鈕的IBAction更容易一些。 – alecnash 2010-06-03 00:42:42