2010-11-24 6 views
0

J'ai une carte qui a quelques centaines de MKPointAnnotations et qui a été configurée pour avoir un accessoire de légende gauche et droite, le problème que j'ai est de trouver un moyen d'effectuer une action qui par exemple, si quelqu'un appuie sur une annotation spécifique, je veux aller à un nouveau viewController qui contient des informations détaillées sur l'annotation. J'ai installé un objet personnalisé qui est conforme à la MKAnnotation si toutes les données sont contenues dans l'annotation en tant que telle ...comment effectuer un événement spécifique à un certain MKAnnotation

@synthesize coordinate; 
@synthesize _title; 
@synthesize _date; 
@synthesize _description; 
@synthesize _coordinates; 

- (CLLocationCoordinate2D)coordinate;{ 
    CLLocationCoordinate2D theCoordinate; 
    theCoordinate.latitude = _coordinates.latitude; 
    theCoordinate.longitude = _coordinates.longitude; 
    return theCoordinate; 
} 

- (NSString *)title { 
return _title; 
} 

- (NSString *)subtitle { 
return _description; 
} 

- (void)dealloc { 
[super dealloc]; 
[_description release]; 
[_date release]; 
[_title release]; 
} 

quelqu'un peut me aider avec ce s'il vous plaît: D

Répondre

3

Considérons la classe le nom de votre code donné ci-dessus est annotation.m

dans votre viewController

annotation *annotationObject=[[annotation alloc]init]; 
[email protected]"Some title"; 
[email protected]"Some subtitle"; 
annotationObject.coordinate=someCoordinate; 
[mapView addAnnotation:annotationObject]; 
[annotationObject release]; 

Placez le code ci-dessus dans une boucle pour ajouter de nombreuses annotations, ou mettre le o annotaion effectue un bjectif dans un tableau et utilise addAnnotations pour mapView.

En viewForAnnotation ajouter un bouton accessoire à l'annotation

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
MKAnnotationView *annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Pin"] autorelease]; 
    annotationView.canShowCallout = YES; 
    UIButton *annotationButton=[UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    annotationView.rightCalloutAccessoryView = annotationButton; 
    return annotationView; 
} 

Lorsque l'utilisateur sélectionne le bouton Acessory ce délégué sera appelé

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
{ 
    //Get the specific annotation by the view.annotation.title 
    //Go to another view that has details 
} 
+0

ok qui fait sens, et merci pour la réponse, mais je ne peux pas accéder à d'autres informations dans l'annotation personnalisée comme mentionné ci-dessus comme la description, le titre, les sous-titres et les coordonnées? –

+0

FYI sous-titre est la description .. Êtes-vous en train de dire que vous n'êtes pas en mesure d'accéder aux sous-titres d'annotation et les coordonnées. Mais vous êtes en mesure d'accéder au titre d'annotation seul. – iPrabu

Questions connexes