Swift 如何正确访问子视图控制器
我的主视图控制器上的容器视图中有一个UIViewController。我正在尝试取消隐藏子视图控制器并在子视图上执行一个函数,但我不知道如何正确访问它 我试过这个:Swift 如何正确访问子视图控制器,swift,Swift,我的主视图控制器上的容器视图中有一个UIViewController。我正在尝试取消隐藏子视图控制器并在子视图上执行一个函数,但我不知道如何正确访问它 我试过这个: let ChildVC = children.first as! ChildView ChildVC.RunFunction() 但这不起作用,因为我有多个子视图 let ChildVC = storyboard?.instantiateViewController(withIdentifier: "Child") as! Ch
let ChildVC = children.first as! ChildView
ChildVC.RunFunction()
但这不起作用,因为我有多个子视图
let ChildVC = storyboard?.instantiateViewController(withIdentifier: "Child") as! ChildView
ChildVC.RunFunction()
然后我尝试了这个,但是当RunFunction()函数被执行时,它抛出了很多错误,说里面的东西是零。(错误不在run函数中,因为它在通过children.first方法访问时工作正常)
如何在不使用childViewController[1](或childViewController是什么数字)方法的情况下指定确切的childViewController
任何帮助都将不胜感激 既然您提到了“容器视图”,我假设您使用嵌入序列调用子视图控制器
假设是这样,您应该实现一个prepare(for:sender)
方法来保存指向子对象的指针:
为父视图控制器提供一个实例变量:
var childView: ChildView?
然后在prepare(for:sender)
方法中
func prepare(for segue: NSStoryboardSegue, sender: Any?) {
if let dest = segue.destination as? ChildView {
childView = dest
}
}
然后,当您需要向childView发送消息时:
childView?.runFunction()
(方法名称应以小写字母开头)最简单的方法是在实例化所需的视图控制器时获取该控制器的引用,并将其添加到容器中。你是怎么做到的?你在用故事板吗?非常感谢。尽管我更喜欢不必依赖基本上是外部类的东西,这样我就可以在一个块中完全运行函数。但我想这可能是容器视图的局限性。