gpt4 book ai didi

ios - 如何在父 View Controller 和 subview Controller 之间传输数据

转载 作者:行者123 更新时间:2023-11-28 15:19:55 25 4
gpt4 key购买 nike

我曾尝试查看与此类似问题的答案,但我不是特别有经验并且无法理解它们,因此非常感谢任何帮助!我的情况如下:当我在我的 Parent ViewController 中按下一个按钮时,下面的代码用于调用一个 Child ViewController(顺便说一下,Child 实际上是一个 TableViewController,但它似乎工作正常“认为”这是一个正常 View Controller ?):

controller = (storyboard?.instantiateViewController(withIdentifier: "People"))
addChildViewController(controller!)
controller?.view.frame = CGRect(x: 10, y: 200, width: 394, height: 300)
self.view.addSubview((controller?.view)!)
controller?.didMove(toParentViewController: self)

然后我想要的是将一个数组从父级传输到子级,并将其用作 TableView 的数据?

其次,当我从 Child 的 TableView 中选择一个单元格时,我希望将相关信息发送给 Parent,并让 Child 消失。
如果有兴趣,我已经设法在不同情况下关闭子项(当在显示子项时在父项中发生单击时)使用以下方法:

controller?.willMove(toParentViewController: nil)
controller?.view.removeFromSuperview()
controller?.removeFromParentViewController()

我真的很感激任何建议,即使它是指向有用的东西的链接!

最佳答案

您可以像这样将值从父 Controller 传递给子 Controller

controller = (storyboard?.instantiateViewController(withIdentifier: "People"))
addChildViewController(controller!)
controller?.view.frame = CGRect(x: 10, y: 200, width: 394, height: 300)
controller.tableDataSource = // Pass your required value to child controller
self.view.addSubview((controller?.view)!)
controller?.didMove(toParentViewController: self)

现在您想要将您的选择值传回父 View Controller 。为此,您需要在 ChildController 中创建一个委托(delegate),例如

@protocol ChildControllerDelegate : class {
func selectedValue(Value : String)
}

之后像这样在 ChildController 中创建该委托(delegate)的变量

weak var delegate : ChildControllerDelegate?

然后在 rowDidSelect 方法中添加以下代码

if(delegate != nil) {
delegate.selectedValue(Value :"Your selected value")
}

现在,当您要从 ParentController 显示 ChildController 时,您必须像这样将 delegate 对象设置为 ParentController

controller = (storyboard?.instantiateViewController(withIdentifier: "People"))
addChildViewController(controller!)
controller?.view.frame = CGRect(x: 10, y: 200, width: 394, height: 300)
controller.delegate = self
self.view.addSubview((controller?.view)!)
controller?.didMove(toParentViewController: self)

然后像那样在 ParentController 中实现委托(delegate)方法

func selectedValue(Value : String) {
// you select val
}

关于ios - 如何在父 View Controller 和 subview Controller 之间传输数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46196201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com