给定一个容器视图,如何获取子视图控制器信息

Posted

技术标签:

【中文标题】给定一个容器视图,如何获取子视图控制器信息【英文标题】:GIven a container view, how to get child viewcontroller info 【发布时间】:2020-04-17 02:54:19 【问题描述】:

我在 containerView 中添加了一个 viewController。如果我知道 containerView 如何获得添加的 viewController?

在我的 containerView 中,根据场景我正在加载 viewController1 或 viewController2。在某些时候,我需要从 viewController 中提取变量值

我正在尝试实现类似的东西

viewController1 有变量 -> dataOfVC1 viewController2 有变量 -> dataOfVC2
if let vc = "viewController in containerView is of type ViewController1" 
   let tempVar = vc.dataOfVC1

当我输入 containerView 时。 -> 所有我能找到有用的东西是 subView..但是我怎样才能得到 viewController

我如何写我的 if 条件?

【问题讨论】:

【参考方案1】:

containerView 使用 segue 将 ViewController 呈现在里面,所以你需要重写 prepare 函数

var currentVC: UIViewController?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    if segue.identifier == "embedChildSegue1" 
      if let childVC = segue.destination as? ViewController1 
        currentVC = childVC
      
    else if segue.identifier == "embedChildSegue2" 
      if let childVC = segue.destination as? ViewController2 
        currentVC = childVC
      
    

你可以使用 if let 再次检查其他函数中的当前 VC

if let vc1 = currentVC as? ViewController1
    let tempVar = vc1.dataOfVC1

【讨论】:

感谢 aiwiguna,但我的问题不同..如果我知道容器视图,我如何在其视图控制器中获取变量的值 关于如何从containerview内部的viewcontroller获取变量,containerview会在viewdidload之前调用segue,所以要获取containerview内部的viewcontroller需要重写prepare函数,就可以获取实例容器视图内的视图控制器 请查看github.com/aiwiguna/ExampleContainerView/tree/master/…

以上是关于给定一个容器视图,如何获取子视图控制器信息的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 UINavigationController 子视图

如何在firebase(swift)中获取子节点的值,并将其显示在视图控制器的标签中

在主视图控制器的子容器视图中获取tableView的引用

如何从位于故事板上的视图控制器获取子视图

iOS如何获取对带有segue的storyboard容器中嵌入的视图控制器的引用?

如何在 swift 中从父视图访问容器视图子视图