我无法将数据从一个 VC 传递到另一个 [重复]
Posted
技术标签:
【中文标题】我无法将数据从一个 VC 传递到另一个 [重复]【英文标题】:I'm unable to pass data from one VC to another [duplicate] 【发布时间】:2017-12-12 08:36:37 【问题描述】:我将数据从一个 VC 传递回第一个 VC。我正在使用此代码:
@IBAction func goBack(_ sender: Any)
dismiss(animated: true, completion: nil)
print(self.entryField.text!)
performSegue(withIdentifier: "sendText", sender: self)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
let destVC = segue.destination as! ViewController
let printName = self.entryField.text!
print(self.entryField.text!)
destVC.nameToDisplay=printName
这是我的数据所在VC的代码。
我想在其中显示我的结果的 VC 的代码。
var nameToDisplay = ""
override func viewWillAppear(_ animated: Bool)
titleDisplay.text=nameToDisplay
我无法传递数据,我尝试打印nameToDisplay
,但它给出了空字符串。
【问题讨论】:
【参考方案1】:将值从第二个控制器传回第一个控制器的合理模式可能是这样的:
class FirstViewController: UIViewController
//......
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if let secondViewController = segue.destination as? SecondViewController
secondViewController.nameHandler = (name) -> Void in
titleDisplay.text=nameToDisplay //second controller will call back here to pass the name value when it's going back.
//......
class SecondViewController: UIViewController
//......
var nameHandler:((_ name:String)->Void)? //a closure to call back name
@IBAction func goBack(_ sender: Any)
if let name = self.entryField.text
self.nameHandler?(name) //call back and pass the name to the first controller
dismiss(animated: true, completion: nil)
//......
【讨论】:
【参考方案2】:您正在寻找视图控制器之间的一对一通信。这可以通过 ios 中的不同方式来实现。
1- 委托
2- 块,闭包。
上述解决方案是使用块。我会和代表们一起告诉你
class FirstVC: UIViewController, PassData
func pushVC()
let secondVC = SecondVC()
secondVC.delegate = self
self.navigationController?.pushViewController(secondVC, animated: true)
func passDataOnDismiss(data: String)
print(data)
protocol PassData: class
func passDataOnDismiss(data: String)
class SecondVC: UIViewController
weak var delegate: PassData?
@IBAction func didButtonPress()
self.delegate?.passDataOnDismiss(data: "I am passing this string back to First VC")
self.navigationController?.popViewController(animated: true)
【讨论】:
我是 iOS 开发新手,你能说出我在代码中做错了什么吗?以上是关于我无法将数据从一个 VC 传递到另一个 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 segue 的情况下在 Swift 3 中将数据从 VC 传递到另一个?
将 ImageData 从一个视图控制器传递到另一个视图控制器