每次更改值时,将数据从Parent UIviewController传递到容器ChildViewController

问题描述

我有一个具有两个容器的UIViewController,每个容器都与某个特定功能的UIViewController相关。

对于那些贬低我的问题的人,如果您将我放在正确的道路上,将会更有帮助和赞赏。

我想做的是将数据从父ViewController传递给childViewControllers

  • 我使用协议/代理尝试了它:但是问题是,我 无法将委托分配给childViewContainer 没有来自父级的实例。

  • 我的第二次尝试是使用prepare函数,但由于父母首先加载一次,这两个容器都加载了,所以效果不佳。因此,如果在parentViewController中更改了值,则无法将其再次传递给孩子。

enter image description here

有什么想法吗?

解决方法

深入研究后,我能够找到自己的问题的解决方案。 如果将来有人需要,我将在这里发布

因此,首先,我需要它从父级控制器而不是情节提要中为ChildContoller午餐(因此,我删除了父级和子级之间的序列。 像这样为childController创建一个变量:

 lazy  var firstChildViewController: FirstChildViewController =  {
        let storynoard = UIStoryboard(name: "Main",bundle: nil)
        let viewController = storynoard.instantiateViewController(identifier: "firstChild") as! FirstChildViewController
    self.addChild(viewController)
    self.view.addSubview(viewController.view)
        return viewController
        
    }()

如果您有两个孩子,则与另一人相同

,然后在viewDidLoad中:

   override func viewDidLoad() {
        
        super.viewDidLoad()
        firstChildViewController.view.isHidden  = false
        secondChildViewController.view.isHidden = true
    }

,然后在FirstChildViewController中:

    override func viewDidLoad() {
    
    super.viewDidLoad()
    if let parent = self.parent as? ParentViewController {
     parent.delegate = self
 }

}

问题解决了 希望对别人有帮助

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...