为什么辅助 ViewConrollers 的 First Responder 不显示主要的 ViewController 方法?

Why First Responder of secondary ViewConrollers do not show main ViewController methods?

提问人:Duck 提问时间:1/31/2020 更新时间:1/31/2020 访问量:92

问:

我的主ViewController上有一个方法,如下所示:

@IBAction func sendData(_ button: MyButtonClass) {
self.doSomethingWithMy(button)
}

此视图控制器是主视图。它嵌入在作为初始控制器的 NavigationController 中。

在这个主 ViewController 中,我有一个 ViewContainer,它通向一个辅助 ViewController。

我正在尝试使我在这个辅助视图控制器中的按钮运行主视图控制器中的方法。sendData

就此而言,我尝试将按钮拖动到辅助视图控制器的 First Responder,但该方法不存在。事实上,Xcode 甚至不允许我拖动它并且没有显示列表。显然,辅助视图控制器不在响应程序链中。sendData

难道不应该是吗?

有没有办法解决这个问题?

iOS Swift iPhone UIViewController

评论


答:

3赞 matt 1/31/2020 #1

Interface Builder 对响应器链一无所知。First Responder 代理仅列出现有的 UIResponder 方法。要执行零目标操作,在响应器链上寻找要调用的方法,请手动将方法选择器添加到 First Responder 代理(使用加号按钮),现在形成连接,完全在按钮所在的视图控制器中工作。

评论

0赞 Duck 1/31/2020
明。最奇怪的是,如果单独选择 First Responder,会在那里显示很多方法,但 Xcode 不允许将按钮拖到那里。简直太棒了。谢谢。
0赞 matt 1/31/2020
我想我不需要提到这里的选择器是 Objective C 选择器,正确选择它取决于你。如果不这样做,该按钮将不执行任何操作。