使用UIAlertViewStylePlainTextInput编辑注释文本

时间:2013-12-25 17:35:42

标签: ios uialertview mkannotation mkannotationview

我可以将引脚注释放到带有公开按钮的地图上。单击该按钮时会弹出一个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];
    }
}

1 个答案:

答案 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];
    }
}