Gee*_*ddy 4 ios uicontainerview swift3.2
我是新手,我想将一个数组从我的容器视图传递到父视图。我已经使用情节提要创建了容器视图,但是容器视图以编程方式出现和消失,如下所示:
//in parent view controller, inside viewDidLoad()
CameraView.isHidden = true
//in child view controller, on click of button,
let parent = self.parent as! DiaryEntryViewController
parent.CameraView.isHidden = true
Run Code Online (Sandbox Code Playgroud)
我希望选择的数据在单击按钮以显示容器视图时显示。我不知道如何将值从子视图控制器传递到父视图控制器,我应该在哪里可以访问这些值。这些值需要在一个函数中访问,该函数在单击父视图控制器中的另一个按钮时就会调用。
步骤来做到这一点。
您的容器视图必须包含一个嵌入到子视图控制器的序列,其名称可以像这样进行序列...。“ homeToContainer”(请参阅所附图像)

将此方法添加到您的父视图控制器(DiaryEntryViewController)
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? ChildViewController,
segue.identifier == "homeToContainer" {
vc.delegate = self
}
}
Run Code Online (Sandbox Code Playgroud)在ChildViewController中添加协议及其变量
protocol ChildToParentProtocol:class {
func buttonClickedByUser()
func needToPassInfoToParent(with value:Int)
}
class ChildViewController: UIViewController {
weak var delegate:ChildToParentProtocol? = nil
@IBAction func createTourPressed(_ sender: UIButton) {
// Call here delegate methods to tell parent about the action
delegate?.buttonClickedByUser()
}
}
Run Code Online (Sandbox Code Playgroud)在父级ViewController的最后一个中,添加此扩展,扩展DiaryEntryViewController:ChildToParentProtocol {
func buttonClickedByUser() {
}
func needToPassInfoToParent(with value:Int) {
}
}
Run Code Online (Sandbox Code Playgroud)