【问题标题】:How to read value of parent ViewController in swift如何快速读取父 ViewController 的值
【发布时间】:2020-08-08 15:48:17
【问题描述】:

我有一个 ViewController 嵌入在 PageViewController 中。页面 ViewController 当然会实例化显示内容的two more viewControllers。我的问题是两个实例化的 viewController 需要读取在 ParentViewController 中创建的值,我不知道如何访问该值。

有什么想法吗??谢谢

【问题讨论】:

    标签: ios swift viewcontroller uipageviewcontroller


    【解决方案1】:

    要访问根控制器,您可以尝试:

      guard let rootController = self.navigationController?.viewControllers.first as? YourRootController else {return}     
    

    然后您可以访问所需的值,例如:

     guard let value = rootController.YourValue else {return}
    

    【讨论】:

    • 谢谢,但这不是我的情况,因为我没有使用导航控制器,我的视图控制器是一个一个嵌入另一个而不显示
    • 你试过segue吗?在从 PageViewController 转换到 ViewController 时传递所需的值。
    【解决方案2】:

    如果您将传递给页面视图控制器的值是静态的,则只需在视图控制器内创建一个变量并在呈现视图控制器之前将值分配给它。

    class ParentViewController: UIViewController {
          var yourValue: String = "Something you want to pass"
          .....
    
          func setupPageViewController() {
               let vc1 = ChildViewController()
               let vc2 = ChildViewController()
               vc1.value = yourValue
               vc2.value = yourValue
               .....
               .....
               pageViewController.setViewControllers([vc1, vc2], direction: .forward, animated: true)
          }
    }
    

    或者,如果您想在父视图控制器中的值发生更改时收到通知,我建议您使用 NSNotificationCenter。请参阅此链接以获取 NSNotificationCenter 教程。

    https://medium.com/@JoyceMatos/using-nsnotificationcenter-in-swift-eb70cf0b60fc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-31
      • 2016-12-02
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      相关资源
      最近更新 更多