iOS - 在子视图的视图中添加一个按钮,但在顶视图的控制器上调用按钮的操作

Posted

技术标签:

【中文标题】iOS - 在子视图的视图中添加一个按钮,但在顶视图的控制器上调用按钮的操作【英文标题】:iOS - adding a button to the view of a subview, but calling button's action on top view's controller 【发布时间】:2011-02-03 17:16:11 【问题描述】:

我已经在我的应用程序的顶视图的子视图(地图)上添加了一个视图(按钮),但是当点击按钮时,我需要在顶视图的控制器上调用一个操作。以下是各层的细分:

-ViewController.view 有地图的子视图。

-map 有按钮的子视图。

-按钮需要有目标/动作,目标是 ViewController。

所有这些都是在 ViewController 中以编程方式完成的,因此 map 是 ViewController.view 的直接子视图(即,它没有自己的视图控制器)。

当我制作按钮并将目标设置为 self 时,它会调用地图上的选择器操作。该按钮是一个十字准线,应该放大到用户的位置。我需要它在地图上进行裁剪和旋转。如果我将视图添加为具有目标自身的 ViewController 的子视图,则会触发操作并放大地图。如果我将视图添加为地图的子视图,则操作不会触发或引发任何错误。

这可能吗?

这是我想要在 ViewController 中执行的操作:

[crosshair addTarget:self action:@selector(zoomToLocation) forControlEvents:UIControlEventTouchUpInside];

[[self map] addSubview:crosshair];

【问题讨论】:

【参考方案1】:

你说: “当我制作按钮并将目标设置为自身时,它会调用地图上的选择器操作。” 这段代码在哪里,即那个时候的'self'是什么?

在地图视图中调用选择器到底有什么问题?如果是某些工作必须由视图控制器完成,可以在选择器调用的视图控制器中设置委托(回调)函数。

【讨论】:

以上是关于iOS - 在子视图的视图中添加一个按钮,但在顶视图的控制器上调用按钮的操作的主要内容,如果未能解决你的问题,请参考以下文章

iOS:从顶视图到底视图拦截点击手势事件

iOS - 将当前顶视图与另一个视图进行比较

添加、删除子视图并在子视图和主 uiviewcontroller 之间进行通信

IOS / Autolayout可能只用于顶视图而不设置子视图?

Xamarin iOS Tap 事件通过最顶部的视图?

iOS在子视图之间切换常见模式[关闭]