iOS ViewController调用容器内的子ViewController

时间:2018-08-30 21:46:51

标签: ios swift

我有一个masterViewcontroller,上面有container,并且有一个2ndViewController通过情节提要嵌入其中。我想知道如何从masterViewController访问2ndViewController。

我已经了解过使用prepare for segue的方法,但是当显示容器中的viewController时似乎没有要求这样做。我需要关联一些东西才能使其出现在“准备segue”功能中吗?

还是有另一种方法可以实现这一目标?

1 个答案:

答案 0 :(得分:0)

您需要覆盖prepare(for segue: sender:)类中的masterViewController

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

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

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

顺便说一句,如果您使用as!,则将segue.destination强制展开为2ndViewController类。如果您不能100%地确定此segue始终将其作为目标类,请考虑使用as?child视为可选类,然后再尝试进行其他检查以尝试使用它。