我有一個符合MKAnnotation
協議的註釋類。該類有一個設置座標,標題和副標題的init方法。MKPinAnnotationView標註按鈕應將自定義對象傳遞給Details ViewController
我使用addAnnotations:annotationArray
創建一個這些註釋的數組,並將它們添加到MKMapView,這是一種正常的方式。
然後在MKMapViewDelegage方法- (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
中,我創建了一個MKPinAnnotationView,它具有自定義的針顏色animatesDrop canShowCallout。標註有一個類型爲UIButtonTypeDetailDisclosure
的UIButton。
當我運行應用程序並單擊地圖上的某個引腳時,我得到預期的結果,這是標題,副標題和detailDisclosure按鈕的標註。
我想弄清楚的是當用戶點擊詳細信息按鈕時,如何將數據傳遞到詳細信息頁面([self.navigationController pushViewController:detailsController animated:YES];
)。我試圖通過向init方法添加一個附加參數來修改我的註釋類,但是我無法訪問- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
方法中的該參數。看來我只能通過做這樣的操作來訪問標題和副標題[view.annotation title]
。
我不知道這裏做什麼,我似乎無法找到如何做到這一點無論任何文件...
再次。我想將對象傳遞給詳細視圖控制器。該對象將包含將在詳細信息頁面上使用的各種數據...
PS - 我使用Xcode 4.2 w/ARC。
是的 - 但請務必首先檢查myAnn類的類型。如果用戶點擊「當前位置」註釋,你也會得到這個消息 - 如果你假設它是你的一個類,它將會破壞一個沒有實現的方法異常。 – Steve 2012-02-25 23:25:11
謝謝安娜,這工作很好!還要感謝您史蒂夫指出當前位置問題。我已經實現了一些額外的代碼來防止這個錯誤'if([myMapAnnotation isKindOfClass:[MyMapAnnotation class]])' – ElasticThoughts 2012-02-25 23:43:49
@Steve,好點,謝謝。 – Anna 2012-02-26 02:27:24