Aggiunta di un pulsante di visualizzazione accessori all'annotazione di richiamo MKMapView?
-
07-07-2019 - |
Domanda
Di recente ho trovato questo sito web e ho provato ad aggiungere alla mia chiamata un pulsante (da un'immagine).
Il codice nell'esempio dei siti Web funziona perfettamente, ma quando ho provato ad aggiungere lo stesso codice al mio progetto non ottengo gli stessi risultati.
C'è ovviamente qualcosa che mi è sfuggito, ma non riesco a risolverlo!
Ecco il mio codice per l'annotazione:
- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
annView.pinColor = MKPinAnnotationColorGreen;
UIButton *advertButton = [UIButton buttonWithType:UIButtonTypeCustom];
advertButton.frame = CGRectMake(0, 0, 23, 23);
advertButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
advertButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
[advertButton setImage:[UIImage imageNamed:@"button_right.png"] forState:UIControlStateNormal];
[advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside];
annView.rightCalloutAccessoryView = advertButton;
annView.animatesDrop=TRUE;
annView.canShowCallout = YES;
annView.calloutOffset = CGPointMake(-5, 5);
return annView;
}
Qualsiasi aiuto sarebbe apprezzato! :)
Soluzione 3
Mi dispiace rispondere alla mia domanda, ma questo è stato risolto impostando il delegato di MKMapView su ViewController. Accidenti, mi ci è voluto un po 'per capirlo ed è così semplice !!
Altri suggerimenti
Quel ragazzo sta usando un'immagine personalizzata per imitare la divulgazione dei dettagli. Puoi effettivamente ottenere la divulgazione di dettagli standard abbastanza facilmente:
[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
Invece di impostare l'obiettivo come hai fatto qui:
[advertButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside];
È possibile utilizzare il delegato predefinito:
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control