有谁知道如何将动作从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/