每次更改值时,将数据从 Parent UIviewController 传递到容器 (ChildViewController)
Pass data from Parent UIviewController to a Container (ChildViewController) every time the value is changed
我有一个 UIViewController,它有两个容器,每个容器都与一个 UIViewController 相关,以实现某些特定功能。
对于贬低我的问题的人,如果你让我走上正确的道路,将会更有帮助和感激。
我想做的是将数据从 parent ViewController 传递到 childViewControllers
我用protocol/delegate试过了:但问题是,我
无法将委托分配给 childViewContainer,因为它
parent.
中没有实例
我的第二次尝试是使用 prepare 函数,但效果不佳,因为一旦 parent 首先加载,这两个容器就会加载。因此,如果 parentViewController 中的值发生更改,我无法将其再次传递给 child.
有什么想法吗?
经过更深入的挖掘,我找到了解决我自己问题的方法。
如果以后有人需要的话我会post
所以,首先,我需要它从 parent 控制器而不是故事板中为 ChildContoller 提供午餐(所以我删除了 parent 和 child.
像这样为 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
}()
另一个也一样,如果你有两个 children
然后在 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
}
}
问题解决了
希望对某人有所帮助
我有一个 UIViewController,它有两个容器,每个容器都与一个 UIViewController 相关,以实现某些特定功能。
对于贬低我的问题的人,如果你让我走上正确的道路,将会更有帮助和感激。
我想做的是将数据从 parent ViewController 传递到 childViewControllers
我用protocol/delegate试过了:但问题是,我 无法将委托分配给 childViewContainer,因为它 parent.
中没有实例我的第二次尝试是使用 prepare 函数,但效果不佳,因为一旦 parent 首先加载,这两个容器就会加载。因此,如果 parentViewController 中的值发生更改,我无法将其再次传递给 child.
有什么想法吗?
经过更深入的挖掘,我找到了解决我自己问题的方法。 如果以后有人需要的话我会post
所以,首先,我需要它从 parent 控制器而不是故事板中为 ChildContoller 提供午餐(所以我删除了 parent 和 child. 像这样为 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
}()
另一个也一样,如果你有两个 children
然后在 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
}
}
问题解决了 希望对某人有所帮助