【问题标题】:Why First Responder of secondary ViewConrollers do not show main ViewController methods?为什么辅助 ViewConrollers 的 First Responder 不显示主要的 ViewController 方法?
【发布时间】:2020-05-17 04:46:00
【问题描述】:

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

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

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

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

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

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

不是应该的吗?

有办法解决吗?

【问题讨论】:

    标签: ios swift iphone uiviewcontroller


    【解决方案1】:

    Interface Builder 对响应者链一无所知。 First Responder 代理仅列出现有的 UIResponder 方法。要创建一个 nil 目标动作,它将沿着响应者链查找要调用的方法,请将您的方法选择器手动添加到 First Responder 代理(使用加号按钮),现在形成连接,完全在视图控制器中工作按钮是。

    【讨论】:

    • 太棒了。最奇怪的是,如果单独选择 First Responder,它会在那里显示很多方法,但 Xcode 不允许将按钮拖到那里。简直太棒了。谢谢。
    • 我想我不需要提到这里的选择器是 Objective C 选择器,是否正确取决于您。如果您不这样做,该按钮将不会执行任何操作。
    猜你喜欢
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多