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