ios viewcontroller调用容器内的子viewcontroller

ios viewcontroller调用容器内的子viewcontroller,ios,swift,Ios,Swift,我有一个masterview控制器,上面有容器,还有一个2ndViewController通过情节提要嵌入其中。我想知道如何从masterViewController访问2ndViewController 我已经了解了如何使用prepare for segue,但当容器中显示我的viewController时,似乎并不需要这样做。是否有什么我需要连接的,它出现在准备segue功能 或者有其他方法可以实现这一点吗?您需要覆盖masterViewController类中的准备(对于segue:sen

我有一个
masterview控制器
,上面有
容器
,还有一个
2ndViewController
通过情节提要嵌入其中。我想知道如何从
masterViewController
访问2ndViewController

我已经了解了如何使用prepare for segue,但当容器中显示我的viewController时,似乎并不需要这样做。是否有什么我需要连接的,它出现在准备segue功能


或者有其他方法可以实现这一点吗?

您需要覆盖
masterViewController
类中的
准备(对于segue:sender:)

segue在情节提要中需要一个标识符。在
prepare
中,然后通过
segue.identifier==“yourdidentifier”
检查要准备的序列是否是您给标识符的序列

然后,您可以将嵌入式ViewController解析为您的
2ndViewController
,如下所示:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "yourIdentifier" { 
        let child = segue.destination as! 2ndViewController
    }
}

顺便说一下,如果您使用
作为,您将强制展开
segue.destination
作为您的
2ndViewController
类。如果你还不确定100%,这个SeGUE总是有这个类作为它的目的地,而是考虑使用<代码> AS < <代码>来处理<代码>子< /C>作为可选的,然后在尝试使用它之前对它的存在做额外的检查。

谢谢汤姆。因此,如果我将该方法添加到
masterViewController
中,并简单地将
print(“in prepare function”)
放在日志中,我什么也看不到。为什么不调用此函数?我想我没有正确地设置一些东西。@马特,你能编辑你的原始问题吗?显示你是如何实现它的,以及你现在的问题是什么?嘿@Tom,我要把你的答案标记为正确的,因为我认为这是可行的。当我抓起代码添加到问题中时,我注意到我可能已经塞满了我的类。谢谢你的回答谢谢@Matt!如果您发现代码中可能出现了错误,并且发现这可能是一个常见错误,请毫不犹豫地将其添加为注释或对原始问题的编辑。