【问题标题】: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 条件?

【问题讨论】:

    标签: ios swift uiviewcontroller containers


    【解决方案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函数,就可以获取实例容器视图内的视图控制器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2017-09-17
    相关资源
    最近更新 更多