2016-07-10 2 views
0

У меня есть массив объектов Meetup, которые отображаются на карте в виде красных контактов. Я хотел бы изменить цвет булавки на основе атрибута каждого объекта Meetup. У каждого Meetup есть категория. Если в первом Meetup в массиве есть категория A, я бы хотел, чтобы штырь был красным, а если второй Meetup имеет категорию B, я бы хотел, чтобы штырь был синим (и так далее). Я пытаюсь сделать это в viewForAnnotation.Изменить MKAnnotation Pin Color

Вот некоторые из моего кода:

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) 

Я пытаюсь сделать что-то здесь, как:

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) 

Может кто-то пожалуйста, мне точку в правильном направлении, о том, как получить это достигается ?

Спасибо!

+0

Не хотите ли вы что-то вроде 'if аннотации Meetup где annotation.category ==" Категория A "{...}'? – Rob

+0

Да! Однако, когда я добавляю, что он не работает. Я не думаю, что аннотация имеет атрибут категории. Я могу получить доступ только к заголовку, субтитрам или координатам – chickenparm

+0

Для определения категории встречи, связанной с этой аннотацией, вам нужно некоторое свойство. Как правило, вы создадите подкласс аннотаций, который включает категорию (или какой-либо другой идентификатор, с помощью которого вы могли бы определить категорию). – Rob

ответ

0

Я полагаю, вы пытаетесь изменить цвет штыря по категориям, Вы должны использовать «Switch» фактически код выглядит так:

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 

}

надежда это то, что вы хотите!

+0

Спасибо за ответ. Где я застрял, как мне получить ссылку на Meetup.category, чтобы я мог узнать, какой цвет сделать вывод? Извините, если мой вопрос не ясен. – chickenparm

+0

Привет @chickenparm, ваш массив называется Meetup правильно? и структура - это что-то вроде Meetup (категория: «Категория A»), Meetup (категория: «Категория»), тогда вы используете категорию переключателей, чтобы позволить pin знать категорию типа домена переключателем цвета, и теперь вы можете решить разные цвета контактов с определенной категорией. жаль английский не мой родной язык, надеюсь, что это может быть помощь. –

Смежные вопросы