我可以将引脚注释放到带有公开按钮的地图上。单击该按钮时会弹出一个alertView,我可以在其中删除所选的注释。我现在正在尝试使用UIAlertViewStylePlainTextInput编辑选定的注释字幕。关于如何做到这一点的任何想法?
- (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];
}
}
答案 0 :(得分:1)
就像删除注释一样,您可以使用地图视图的selectedAnnotations
属性来访问所选注释以更新其subtitle
。
以下示例假设您正在使用注释类MKPointAnnotation
(具有可设置的subtitle
属性)作为注释,但您可以根据需要将其替换为您的类:
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];
}
}