Ho una matrice con oltre 200 oggetti e sto provando a eseguire un ciclo attraverso ciascuno di essi.Annotazioni della vista mappa con colori pin diversi
Ogni oggetto avrà un campo sì/no e voglio visualizzare un indicatore di colore diverso a seconda del valore sì/no.
Da quello che riesco a vedere sta succedendo che il mio ciclo attraversa prima ciascun oggetto e poi tutte le annotazioni sono aggiunte alla fine per ogni oggetto.
Poiché eseguo un controllo all'interno del mio ciclo attraverso l'array sul valore yes no quando tutte le annotazioni vengono aggiunte alla mia mappa, utilizzeranno il valore sì/no dall'ultimo oggetto nell'array quando si passa alla trama per tutti.
Come posso fare in modo che il marcatore dipenda dal valore sì/no per ogni singolo elemento?
mio codice è
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];
}
con il mio codice di annotazione come segue
- (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;
}
e current_yesno
è dichiarato nel mio file .h.
Grazie per la risposta. Come aggiungo la proprietà yesno aMapViewAnnotation? – user1096447
In MapViewAnnotation.h, metti '@property (nonatomic, assegna) BOOL yesno;' e in MapViewAnnotation.m metti '@synthesize yesno;' – Anna
Grazie Anna, stil una risposta pertinente. –