Я звоню в службу и возвращаю набор широт и долгот, которые затем помещаю на карту с помощью MapKit.
используя MKAnnotationView Я добавляю RightCallOutButton к каждой аннотации.
Итак, мне пришлось создать новый MapDelegate. Код ниже.
Если я нажимаю на кнопку, то при создании приложения происходит сбой, и MonoTouch выдает ошибку, в которой говорится, что селектор получает доступ ко всему, что уже было обработано GC (сборка мусора).
Так что мой вопрос будет таким: где я должен установить RightCalloutAccessoryView и где я должен создать кнопку, если не в этом коде ниже?
public class MapDelegage : MKMapViewDelegate {
protected string _annotationIdentifier = "BasicAnnotation";
public override MKAnnotationView GetViewForAnnotation (MKMapView mapView, NSObject annotation) {
MKAnnotationView annotationView = mapView.DequeueReusableAnnotation(this._annotationIdentifier);
if(annotationView == null) {
annotationView = new MKPinAnnotationView(annotation, this._annotationIdentifier);
} else {
annotationView.Annotation = annotation;
}
annotationView.CanShowCallout = true;
(annotationView as MKPinAnnotationView).AnimatesDrop = true;
(annotationView as MKPinAnnotationView).PinColor = MKPinAnnotationColor.Green;
annotationView.Selected = true;
var button = UIButton.FromType(UIButtonType.DetailDisclosure);
button.TouchUpInside += (sender, e) => {
new UIAlertView("Testing", "Testing Message", null, "Close", null).Show ();
} ;
annotationView.RightCalloutAccessoryView = button;
return annotationView;
}
}