我有一个带有三个条形按钮的地图,可以显示不同的标记。如果我单击一个条形按钮,则特定标记将显示在地图中,该标记已经很好用。
现在我想显示一个透明的覆盖图(弹出窗口),其中包含标记的描述,我点击一个带有按钮的条形按钮,再次关闭覆盖图并显示标记(在背景中设置)。
条形按钮的功能:
- (IBAction)routeTwo:(id)sender
{
// The code for the overlay
// ...
// remove any annotations that exist
[map removeAnnotations:map.annotations];
// Add any annotations which belongs to route 2
[map addAnnotation:[self.mapAnnotations objectAtIndex:2]];
[map addAnnotation:[self.mapAnnotations objectAtIndex:3]];
[map addAnnotation:[self.mapAnnotations objectAtIndex:4]];
[map addAnnotation:[self.mapAnnotations objectAtIndex:5]];
}
我尝试了以下可能性:
1。使用模态视图控制器
RouteDescriptionViewController *routeDescriptionView = [[RouteDescriptionViewController alloc] init];
[self presentModalViewController:routeDescriptionView animated:YES];
[routeDescriptionView release];
效果很好,但问题是:背景中的地图视图不再可见(配置模态视图的alpha值不会改变任何东西)。
2。将RouteDescriptionView添加为子视图
RouteDescriptionViewController *routeDescriptionView = [[RouteDescriptionViewController alloc] init];
[self.view addSubview:routeDescriptionView.view];
[routeDescriptionView release];
效果也不错,但问题在于:我无法在子视图上配置关闭按钮来关闭/删除子视图(RouteDescriptionView)。
第3。使用UIAlertView
会按预期工作,但UIAlert不是真正可定制的,因此不适合我的需要。
任何想法如何实现这一目标?
答案 0 :(得分:0)
如果你选择选项2,你可以添加一个UIButton实例作为routeDescriptionView的子视图,并将该按钮连接到routeDescriptionView的removeFromSuperview方法。
例如,在RouteDescriptionViewController的loadView或viewDidLoad方法中:
UIButton *closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[closeButton setImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal];
[closeButton addTarget:[self view] action:@selector(removeFromSuperview) forControlEvents:UIControlEventTouchUpInside];
[[self view] addSubview:closeButton];