У меня есть массив с более чем 200 объектами, и я пытаюсь выполнить цикл через каждый из них.Отображение аннотаций карт с разными цветами контактов
У каждого объекта будет поле yes/no, и я хочу отобразить другой цветной маркер, зависящий от этого значения yes/no.
Из того, что я вижу, происходит, когда моя петля проходит через каждый объект сначала, а затем вся аннотация добавляется в конце для каждого объекта.
Поскольку я выполняю проверку внутри своего цикла через массив по значению yes no, когда вся аннотация добавляется в мою карту, она будет использовать значение yes/no из последнего объекта в массиве, когда оно переходит в график для всех.
Как это сделать, чтобы маркер был различным в зависимости от значения да/нет для каждого отдельного элемента?
Мой код
for (i = 0; i < [appDelegate.itemArray count]; i++) {
item_details *tempObj = [appDelegate.itemArray objectAtIndex:i];
location.latitude = [tempObj.lat floatValue];
location.longitude = [tempObj.lon floatValue];
current_yesno = tempObj.yesno;
MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc]initWithTitle:tempObj.name andCoordinate:location];
[self.mapView addAnnotation:newAnnotation];
[newAnnotation release];
}
с моим кодом аннотаций следующим
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
if(current_yesno == YES){
annView.pinColor = MKPinAnnotationColorGreen;
}
else
{
annView.pinColor = MKPinAnnotationColorRed;
}
annView.animatesDrop=NO;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
}
и current_yesno
объявлена в моем файле .h.
Спасибо за ответ. Как добавить свойство yesno toMapViewAnnotation? – user1096447
В MapViewAnnotation.h поместите '@property (неатомный, назначьте) BOOL yesno;' и в MapViewAnnotation.m поместите '@synthesize yesno;' – Anna
Спасибо Анне, ответьте соответствующим ответом. –