如何正确访问子视图控制器

时间:2018-10-26 22:10:21

标签: swift

我的主视图控制器上的容器视图内有一个UIViewController。我试图取消隐藏子视图控制器并在子视图上执行功能,但我不知道如何正确访问它。

我已经尝试过了:

let ChildVC = children.first as! ChildView
ChildVC.RunFunction()

但这不起作用,因为我有多个子视图。

 let ChildVC = storyboard?.instantiateViewController(withIdentifier: "Child") as! ChildView
 ChildVC.RunFunction()

然后,我尝试了此操作,但是当执行RunFunction()函数时,它抛出很多错误,表明其中的内容为零。 (该错误与run函数无关,因为通过children.first方法访问时,该函数运行正常)

如何在不使用children [1](或childViewController的编号是多少)方法的情况下指定确切的childViewController?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

由于您提到了“容器视图”,所以我假设您使用嵌入的segue调用子视图控制器。

假设是这种情况,您应该实现一个pip install sqlalchemy方法,该方法保存指向孩子的指针:

给父视图控制器一个实例变量:

prepare(for:sender)

然后在您的var childView: ChildView? 方法中

prepare(for:sender)

然后,当您需要将消息发送到childView时:

func prepare(for segue: NSStoryboardSegue, sender: Any?) {
   if let dest = segue.destination as? ChildView {
       childView = dest
   }
}

(方法名称应以小写字母开头)