2016-07-10 18 views
0

Ich habe eine Reihe von Meetup-Objekten, die auf einer Karte als rote Pins angezeigt werden. Ich möchte die Farbe des Stiftes basierend auf einem Attribut jedes Meetup-Objekts ändern. Jedes Meetup hat eine Kategorie. Wenn das erste Meetup im Array eine Kategorie A hat, möchte ich, dass der Pin rot ist, und wenn das zweite Meetup eine Kategorie B hat, möchte ich, dass der Pin blau ist (und so weiter). Ich versuche dies in ViewForAnnotation zu tun.Ändern MKAnnotation Pin Farbe

Hier einige meiner Code:

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? { 

    if annotation is Meetup { 

    let identifier = "Location" 
    var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as! MKPinAnnotationView! 
    if annotationView == nil { 
     annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier) 

     annotationView.enabled = true 
     annotationView.canShowCallout = true 
     annotationView.animatesDrop = false 
     annotationView.pinTintColor = UIColor(red: 255/255, green: 36/255, blue: 0, alpha: 1) 
     annotationView.tintColor = UIColor(white: 0.0, alpha: 0.5) 

ich etwas in hier wie zu tun versuche:

if annotation is Meetup where Meetup.category == "Category A" { 
      annotationView.pinTintColor = UIColor(red: 255/255, green: 36/255, blue: 0, alpha: 1) 
} else if annotation is Meetup where Meetup.category == "Category B" { 
      annotationView.pinTintColor = UIColor(red: 0, green: 36/255, blue: 255/255, alpha: 1) 

Kann jemand in die richtige Richtung zeigen Sie mir bitte auf, wie dies erreicht zu erhalten ?

Danke!

+0

Willst du nicht einfach etwas wie 'wenn Anmerkung ist Meetup wo annotation.category ==" Kategorie A "{...}'? – Rob

+0

Ja! Wenn ich jedoch hinzufüge, dass es nicht funktioniert. Ich denke nicht, dass die Anmerkung das Attribut der Kategorie hat. Ich kann nur auf Titel, Untertitel oder Koordinaten zugreifen – chickenparm

+0

Sie benötigen eine Eigenschaft, um die Kategorie des mit dieser Anmerkung verknüpften Meetups zu identifizieren. Im Allgemeinen würden Sie eine Annotation-Unterklasse erstellen, die die Kategorie (oder eine andere Kennung, mit der Sie die Kategorie bestimmen könnten) enthält. – Rob

Antwort

0

Ich nehme an, Sie versuchen, die Stiftfarbe nach Kategorie zu ändern, benötigen Sie den Code „Switch“ verwenden, tatsächlich so:

func pinColor(type:String) -> UIColor{ 
var color = UIColor.purpleColor() 
switch category { 
case "Category A": 
    color = UIColor(red: 255/255, green: 36/255, blue: 0, alpha: 1) 
case "Category B": 
    color = UIColor(red: 0, green: 36/255, blue: 255/255, alpha: 1) 
default: 
    color = UIColor.whiteColor() 
} 
return color 

}

Hoffnung das ist, was Sie wollen!

+0

Danke für die Antwort. Wo ich feststecke, wie bekomme ich einen Verweis auf Meetup.category, damit ich wissen kann, welche Farbe der Pin macht? Entschuldigung, wenn meine Frage nicht klar ist. – chickenparm

+0

Hallo @chickenparm, dein Array heißt Meetup oder? und die Struktur ist etwas wie Meetup (Kategorie: "Category A"), Meetup (Kategorie: "Category"), dann verwenden Sie Switch-Kategorie, um Pin Kategorie Typ Domain der Schalter der Farbe wissen lassen und jetzt können Sie die verschiedenen Pin Farben entscheiden mit spezifischer Kategorie. Entschuldigung Englisch ist nicht meine Muttersprache, hoffe das kann Hilfe sein. –