问题
I can drop pin annotations onto a map which has a disclosure button. When that button is clicked an alertView pops up in which I can remove the selected annotation. I am now trying the edit the selected annotation subtitle with UIAlertViewStylePlainTextInput. Any ideas on how I can do this?
- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
NSLog(@"Annotation button clicked");
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Annotation" message:@"Edit Subtitle" delegate:self cancelButtonTitle:@"Hide" otherButtonTitles:@"Update Subtitle", @"Remove Pin",nil];
alert.alertViewStyle = UIAlertViewStylePlainTextInput;
[alert show];
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0) {
NSLog(@"Hide button clicked");
}
if (buttonIndex == 1) {
NSLog(@"Update button clicked");
//e.g. subtitle.text = [[alertView textFieldAtIndex:0] text];
}
if (buttonIndex == 2) {
NSLog(@"Remove button clicked");
[self.map removeAnnotations:self.map.selectedAnnotations];
}
}
回答1:
Just like when removing the annotation, you can use the map view's selectedAnnotations
property to get access to the selected annotation to update its subtitle
.
The following example assumes you're using the annotation class MKPointAnnotation
(which has a settable subtitle
property) for your annotations but you can replace it with your class as needed:
NSLog(@"Update button clicked");
//e.g. subtitle.text = [[alertView textFieldAtIndex:0] text];
//Make sure there is a selected annotation...
if (self.map.selectedAnnotations.count > 0)
{
//Since only one annotation can be selected at a time,
//the selected annotation is the one at index 0...
id<MKAnnotation> ann = [self.map.selectedAnnotations objectAtIndex:0];
//Make sure the selected annotation is one of our types...
if ([ann isKindOfClass:[MKPointAnnotation class]])
{
MKPointAnnotation *pa = (MKPointAnnotation *)ann;
pa.subtitle = [[alertView textFieldAtIndex:0] text];
}
}
来源:https://stackoverflow.com/questions/20775282/edit-annotation-text-with-an-uialertviewstyleplaintextinput