我想在Swift中创建一个弹出控制器,但我无法将数据从父控制器传递到弹出窗口(在弹出窗口中设置标签文本)
代码:
let popUpPreload = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "popUpOneID") as! PopUpViewController
popUpPreload.delegate = self
popUpPreload.lbTitlePopUp.text = "title"
popUpPreload.tvIntructions.text = "intructions"
self.addChildViewController(popUpPreload)
popUpPreload.view.frame = self.view.frame
self.view.addSubview(popUpPreload.view)
popUpPreload.didMove(toParentViewController: self)
设置标签弹出文本中的错误。
我在link
中提及答案 0 :(得分:1)
您无法从故事板中实例化任何ViewController,然后立即尝试在其插座上设置属性。在调用ViewDidLoad之前,它们都是零。当您调用实例化视图控制器时,它会加载XML,创建ViewController及其所有子视图,然后使用键值观察将所有出口设置为它创建的视图。然后在此过程完成后调用ViewDidLoad。
您需要在目标视图控制器上写入常规变量。
let popUpPreload = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "popUpOneID") as! PopUpViewController
popUpPreload.delegate = self
popUpPreload.titleText = "title"
然后在ViewController的ViewdidLoad函数中,将诸如label.text的outlet属性分配给变量。
var titleText = ""
override func viewDidLoad() {
super.viewDidLoad()
label.text = titleText
}