Hinzufügen mehrerer Annotationen zur Map, aber alle zeigen einige der gleichen Daten

8

UPDATE 2:

Hier ist der existierende Code innerhalb von Maps, aber es ist so, als ob die Annotationen mit den Pins nicht in Ordnung sind. Einmal wird ein Pin grün sein, beim nächsten Mal ist derselbe Pin rot. Woher kommt die Trennung?

%Vor%

UPDATE:

Ich sehe jetzt, dass das Problem darin besteht, dass self.theObject einmal gesetzt ist, also zieht es nur Daten von allem für alles, was nicht von Annotations behandelt wird. Ich denke, das Problem ist jetzt, wie kann ich es für jedes Objekt zeigen lassen, anstatt was immer der letzte Satz war?

Meine App verwendet Parse.com und PFObjects. Die App fragt das PFObject ab, um alle Daten für jeden Eintrag in der Zeile abzurufen, zieht die Koordinaten für eine bestimmte Position für diesen Eintrag zusammen mit verschiedenen Datenbits heraus und fügt für jeden Eintrag eine Anmerkung hinzu. Wenn ich den MKAnnotationView so einstelle, dass ich mehrere farbige Pins außerhalb dessen haben kann, was Apple normalerweise leicht macht, stoße ich auf Probleme. Das Bild und einige Daten für die Annotation setzen jeden Pin auf das, was der letzte aufgerufen hat. Der Titel und der Untertitel sind in Ordnung, aber nicht die Farbe oder das Callout-Bild. Hier ist mein Code, was läuft hier falsch?

%Vor%     
user717452 30.08.2016, 19:20
quelle

2 Antworten

0

Unterklasse MKPointAnnotation zum Beispiel MyPointAnnotation fügen Sie eine Eigenschaft result

hinzu %Vor%

In viewWillAppear: modifiziere diese Zeilen

%Vor%

In viewForAnnotation: Delegate-Methode erhalten Sie das Ergebnis wie folgt

%Vor%     
Warif Akhand Rishi 04.09.2016, 08:00
quelle
0

Sie können das auf verschiedene Arten lösen.

1. MKMapView class hat eine Eigenschaft, die Annotationen genannt wird. Wenn Sie diese Eigenschaft aufrufen, erhalten Sie ein sortiertes Array aller Annotationen auf Ihrer Karte, das mit der Reihenfolge Ihrer Daten in Ihrem ursprünglichen Array übereinstimmt. Auf diese Weise müssen Sie nur alle abgerufenen Objekte von Parse speichern. Fügen Sie in der Benutzeroberfläche Ihres View-Controllers einfach eine neue Eigenschaft hinzu:

%Vor%

In Ihrer viewWillAppear -Methode:

%Vor%

Dann ziehe diese Daten einfach in der Delegate-Methode

%Vor%

2. Überschreiben und Unterklasse das MKPointAnnotation-Objekt.

%Vor%

Und dann in Delegate-Methode nur dieses Objekt aus Annotation-Objekt und tun, was Sie wollen

%Vor%

3. Sie können ein Wörterbuch erstellen, das Paare von MKAnnotation und PFObject speichert, die Sie für die Anpassung benötigen (nicht für große Datenmengen empfohlen).

%Vor%

in viewWillAppear:

%Vor%

Und dann noch einmal die Daten in Delegate ziehen:

%Vor%     
Pavel Gatilov 07.09.2016 10:19
quelle