如何使用 First Responder 调用另一个 ViewController 方法

How do use First Responder to call another UIViewController's method

我一直在尝试按照这篇关于如何使用 First Responder 的文章进行操作。

http://www.cocoanetics.com/2012/09/the-amazing-responder-chain/

似乎如果视图控制器存在于导航控制器等容器中,我应该能够调用在另一个视图控制器中实现的第一响应者方法

这是 Storyboard 中的布局:

UINavigationController -(关系)-> UITableViewController1 -(推送)-> UITableViewController2

我想在 UITableViewController1 中实现一个方法

- (void)coolMethod:(id) { ... }

但是调用了UITableViewController2中的方法

[[UIApplication sharedApplication] sendAction:@selector(coolMethod:) to:nil from:nil forEvent:nil];

我想要的是 sendAction:to:from:forEvent:将动作发送到 UINavigationController,然后再将其发送到 UITableViewController2

我正在努力实现的目标是可能的吗?我做错了什么?

(此外,我尝试在故事板中将其链接起来,但它不会连接。显然有问题,但我不知道我错过了什么)

如果您能给我任何帮助或建议,我们将不胜感激!

这不是响应链的用途,您的 VC1 不在 VC2 的响应链中。我想您可以实现自己的导航控制器子类来执行此操作,但这不是好的代码。

通过给 VC2 一个委托 属性 并让 VC1 实现 dal agate 协议并在推送 VC2 时将自己设置为委托,可以更好地处理你所描述的问题。