我正在尝试将文本值从一个 VC(称为第二个 VC)传递到另一个 VC(第一个 VC)。 secondVC 中的信息将决定 firstVC 中文本字段的文本值。我曾尝试使用文档来解决这个问题,但我一定感到非常困惑,或者出现了其他问题 - 我无法弄清楚是哪个。
在我的第二个 VC 中:
func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "saveSegue") {
let destinationVC = segue.destination as! firstVC
destinationVC.addressTextField.text = searchBar.text
}
}
@IBAction func savePressed(_ sender: Any) {
performSegue(withIdentifier: "saveSegue", sender: self)
}
回到第一个 VC 后,textField 没有按预期填充 searchBar 文本。 (searchBar 文本不是零)据我了解,当在第二个 VC 中选择按钮并调用 performSegue 时,它还会调用 prepareForSegue 并设置 addressTextField.text 值,同时返回到第一个 VC。我不确定我的逻辑是否正确。
最佳答案
在你的 FirstViewController 中
@IBAction func dismissSearchVC(_ sender: UIStoryboardSegue) {
let sourceVC = sender.source as! viewController2
addressTextField.text = sourceVC.searchBar.text
}
在你的第二个ViewController中
var searchedText = ""
@IBAction func savePressed(_ sender: Any) {
performSegue(withIdentifier: "saveSegue", sender: self)
}
现在连接你的 viewController 以在顶部退出并添加一个标识符到该 segue 作为 saveSegue 并从下拉列表中选择 dismissSearchVC
现在选择“unwind segue to DismissSearchVC”并在属性检查器中添加标识符..
关于Swift 3.0 使用 Segue 在 View Controller 之间传递信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44165109/