J'ai une mapView sur laquelle les utilisateurs appuient pour laisser tomber une épingle. Il peut y avoir plusieurs broches à la fois, et chaque vue d'annotation a une légende qui pousse une nouvelle vue à la pile quand elle est pressée. Ce que je veux faire est de passer le titre de la vue d'annotation à l'étiquette dans la deuxième vue.MapView avec plusieurs annotations avec légendes, comment passer le titre à la vue suivante
Voici le code où je laisse tomber la broche:
-(void)press:(UILongPressGestureRecognizer *)recognizer
{
CGPoint touchPoint = [recognizer locationInView:worldView];
CLLocationCoordinate2D touchMapCoordinate = [worldView convertPoint:touchPoint toCoordinateFromView:worldView];
geocoder = [[CLGeocoder alloc]init];
CLLocation *location = [[CLLocation alloc]initWithCoordinate:touchMapCoordinate
altitude:CLLocationDistanceMax
horizontalAccuracy:kCLLocationAccuracyBest
verticalAccuracy:kCLLocationAccuracyBest
timestamp:[NSDate date]];
[geocoder reverseGeocodeLocation:location
completionHandler:^(NSArray *placemarks, NSError *error) {
NSLog(@"reverseGeocoder:completionHandler: called");
if (error) {
NSLog(@"Geocoder failed with error: %@", error);
} else {
CLPlacemark *place = [placemarks objectAtIndex:0];
address = [NSString stringWithFormat:@"%@ %@, %@ %@", [place subThoroughfare], [place thoroughfare], [place locality], [place administrativeArea]];
if (UIGestureRecognizerStateBegan == [recognizer state]) {
addressPin = [[MapPoint alloc]initWithCoordinate:touchMapCoordinate
title:address];
[worldView addAnnotation:addressPin];
}
}
}];
}
Et voici le code où j'appelle la seconde vue:
-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
PinViewController *pinViewController = [[PinViewController alloc]init];
[self passValues];
[[self navigationController]pushViewController:pinViewController animated:YES];
}
Il n'y a pas un nombre fini de broches qui seront vers le bas, alors comment puis-je donner la broche un identifiant de NSNumber aléatoire? –
Dans mon exemple, j'utilise sqlite pour créer et afficher des annotations sur la carte. J'ai là id avec "auto increment", donc il n'y a aucun moyen pour certaines broches a le même id. Si vous stockez vos annotations dans un tableau, vous pouvez utiliser l'index de tableau. – edzio27
Donc, ce que j'ai de la difficulté à comprendre, c'est comment je stocke l'adresse géocodée dans la variable d'adresse de la classe MyLocation? Désolé de poser autant de questions, mais je suis très nouveau à ce sujet. –