In meinem Xamarin.iOS Projekt ich meine eigenen Delegierten Klasse als Unterklasse von MKMapViewDelegate habeXamarin.iOS benutzerdefinierte Mapdelegate
Im Viewcontroller ich meine Delegierten als Delegierter des MapView.
public override async void ViewDidLoad()
{
base.ViewDidLoad();
mapView.delegate = new MyMapDelegate(this);
}
Jetzt in meiner Delegiertenklasse füge ich einen Button für jeden Pin hinzu. Diese Schaltfläche zeichnet eine Überlagerung auf die Karte. Hier muss ich mapview.delegate = null
setzen, sonst stürzt die App ab.
Aber wenn ich mapView.delegate = null
setze, verwendet die App nicht die "DequeueReusableAnnotation" -Methode und natürlich wird die Anwendung DidUpdateUserLocation nicht mehr verwenden.
Der Fehler erhalte ich, wenn ich nicht mapviews Delegierten auf null gesetzt:
System.InvalidOperationException: Event-Registrierung wird das Überschreiben Delegierten. Entweder nur verwenden, um Ereignisse oder Ihre eigenen Delegierten: testApp.iOS.MyMapDelegate MapKit.MKMapView + _MKMapViewDelegate
Wie kann ich einen Delegierten in Xamarin?
EDIT
class MyMapDelegate: MKMapViewDelegate
{
... some vars
public MyMapDelegate(MapController mapController)
{
this.mapController = mapController;
}
public override MKAnnotationView GetViewForAnnotation(MKMapView mapView, IMKAnnotation annotation)
{
//everything works fine here for AnnotationView
myBtn += (sender,e) => {
//mapView.Delegate = null;
userLocation = mapView.UserLocation.Coordinate
...
mapView.OverlayRenderer = (mv,ol) => myLine;
mapView.AddOverlay(myWay.polyLine,MKOverlayLevel.AboveRoads)
};
}
Meine Vermutung ist vielleicht der Fehler erscheint, weil ich Methoden von mapView wie OverlayRenderer und Userlocation nennen?
Können Sie den Code der 'MyMapDelegate' Klasse hinzufügen? Insbesondere der Ort, an dem Sie die Anmerkungen erstellen und zur Karte hinzufügen. – apineda
Ich habe meine Frage @apineda bearbeitet – Korken55