ContainerViewController

ContainerViewController

有谁知道如何将动作从ViewController传递到其ContainerViewController。我尝试通过自身触发的操作来隐藏容器视图。 ContainerViewController嵌入在容器视图中。

ViewController:

@IBOutlet weak var ChoseLanguageContainer: UIView!


**ContainerViewController:**

@IBAction func action(_ sender: Any) {

    ViewController().containerView.isHidden = true

} //I know this does not work

最佳答案

我有类似的要求,我创建了自己的委托方法,这些方法在ContainerViewController中实现。

 protocol  ContainerViewControllerDelegate :class{
        func notifyItemChange(any params you need to pass.)
    }


在我的容器ViewController中,我为委托创建了一个变量。

var changeContainerDelegate :ContainerViewControllerDelegate?


在包含容器的父级View Controller中,我执行了以下操作。

获取嵌入在容器中的视图控制器实例。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if let containerViewController = segue.destination as? ContainerViewController{
             containerViewController.changeContainerDelegate = self

            }


在视图控制器中创建容器视图的IBOutlet。

符合此协议,并在View controller中编写实现。

func changeContainerVC(containerVCName : String ,dataToBePassed:[AnyObject]?) {
       containerView.isHidden = true
}


在ContainerViewController内的按钮操作中,像这样调用委托:

changeContainerDelegate?.notifyItemChange()

这对我有用。希望对你也有帮助!

关于ios - 如何从ViewController触发对嵌入式ContainerViewController的操作,以及如何反向执行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48070206/

10-09 09:12