Ios 如何将数据从VC子视图发送到VC superview

Ios 如何将数据从VC子视图发送到VC superview,ios,swift2,Ios,Swift2,我有第一个控制器和第二个控制器。在第一个控制器中单击单元格时,numpad(=第二个控制器)将作为子视图加载。我想将numpad的按钮连接到第一个集合,这样我就可以立即在firstController上的标签上显示数字。数据的处理应该是即时的 我无法将按钮连接到第一个viewcontroller。 这是我第一次尝试使用它,所以我可能完全错误地看待它。我使用了两个不同的ViewController来维护故事板中的概览 关于如何将数据从VC子视图转发到superview,有什么建议吗 您可以使用委托

我有第一个控制器和第二个控制器。在第一个控制器中单击单元格时,numpad(=第二个控制器)将作为子视图加载。我想将numpad的按钮连接到第一个集合,这样我就可以立即在firstController上的标签上显示数字。数据的处理应该是即时的

我无法将按钮连接到第一个viewcontroller。 这是我第一次尝试使用它,所以我可能完全错误地看待它。我使用了两个不同的ViewController来维护故事板中的概览

关于如何将数据从VC子视图转发到superview,有什么建议吗


您可以使用委托将数据传递回firstcontroller

在numpad视图中,当有人输入数字时,将触发创建委托

protocol NumpadDelegate {
    func numpadWasPressed(value:Int)
}
以及numpadvc上的一个变量,它是委托

 var delegate: NumpadDelegate?
 FirstVC: NumPadDelegate {

    func viewDidLoad() {
      self.numpadVC.delegate = self
    }
 }    
然后,您的第一个vc需要实现委托并将自己设置为委托

 var delegate: NumpadDelegate?
 FirstVC: NumPadDelegate {

    func viewDidLoad() {
      self.numpadVC.delegate = self
    }
 }    
在有人按某个数字时触发的方法上,调用您的委托方法

self.delegate.?numpadWasPressed(numpadValue)
然后firstviewcontroller将实现该委托,当按下该委托的numpad时,您可以从该方法获取数据

func numpadWasPressed(value:Int) {
   //get numpad value here

 }

类似这样的情况

因为您从第一个视图控制器开始运行第二个视图控制器(
NumpadVC
),所以您肯定有一个对
NumpadVC
的引用

一个合适的解决方案是声明一个协议(在任何类之外)

NumpadVC

var delegate NumPadDelegate?
每次点击一个按钮,呼叫

delegate?.didTapButton(button)
并将引用传递到当前按钮


在第一个视图中,控制器将
NumPadDelegate
添加到类声明行,并在转换到
NumpadVC
之前,将
NumpadVC
的委托(假设这是实例的名称)设置为
self

numpadVC.delegate = self
然后实施

func didTapButton(button: UIButton) {}

处理按钮点击。

您是否尝试过委托概念来实现此目的??