gpt4 book ai didi

ios - 访问 alertView 的调用 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:49:50 26 4
gpt4 key购买 nike

我有一个 UIAlertView,它在用户想要删除 RegionAnnotation 时显示为确认。

我无法弄清楚如何访问调用 UIAlertView 的 RegionAnnotationView,我需要它来删除 RegionAnnotation。

这是我损坏的代码 - 您可以看到我试图将 AlertView 的 super View 转换为 RegionAnnotationView 的地方(公认的坏主意)。

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex==0)
{
NSLog(@"alertView.superview is a %@",alertView.superview);
RegionAnnotationView *regionView = (RegionAnnotationView *)alertView.superview;
RegionAnnotation *regionAnnotation = (RegionAnnotation *)regionView.annotation;

[self.locationManager stopMonitoringForRegion:regionAnnotation.region];
[regionView removeRadiusOverlay];
[self.mapView removeAnnotation:regionAnnotation];
}

}

最佳答案

由于注释在用户可以删除之前被选中,您可以从 map View 的 selectedAnnotations 属性中获取对注释的引用。

在警报 View 委托(delegate)方法中,您可以这样做:

if (mapView.selectedAnnotations.count == 0)
{
//shouldn't happen but just in case
}
else
{
//since only one annotation can be selected at a time,
//the one selected is at index 0...
RegionAnnotation *regionAnnotation
= [mapView.selectedAnnotations objectAtIndex:0];

//do something with the annotation...
}

如果未选择注释,另一种简单的替代方法是使用 ivar 来保存对需要删除的注释的引用。

MSK 评论的另一个选项是使用 objc_setAssociatedObject。

无论如何,假设 View 层次结构以某种方式使用父 View 并不是一个好主意。

关于ios - 访问 alertView 的调用 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com