【发布时间】:2017-05-25 02:14:32
【问题描述】:
我正在尝试将文本值从一个 VC(称为 secondVC)传递到另一个 VC(firstVC)。 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)
}
回到 firstVC 后,textField 未按预期填充 searchBar 文本。 (searchBar 文本不为零) 据我了解,当在 secondVC 中选择按钮并调用 performSegue 时,它也会调用 prepareForSegue 并设置 addressTextField.text 值,同时继续返回 firstVC。我不确定我的逻辑是否正确。
【问题讨论】:
-
你在使用navigationController吗?您确定您实际上是在使用
firstVC而不仅仅是将您的secondVC从 naviationController 堆栈中弹出?在prepareForSegue中放置一个断点,看看它是否真的被调用了。 -
我没有使用navigationController - 只有故事板segues。我在 prepareForSegue 中放了一个断点,它没有被调用。这两者有关系吗?
-
通常当你“返回”到前一个 viewController 时,你实际上并没有执行 segue。您要么关闭模态视图 segue,要么从 viewController 堆栈中弹出一个视图(如果您使用的是 navigationController)。传回数据有点复杂,我推荐的方法是使用委托。好消息here
-
您是否真的将断点放在
if-block之外以检查是否调用了prepareForSegue?或者您是否将断点放在您的if-block中?只是要求确定。 -
@nayem 我只是把它放在 if 块的外面和里面,都没有被调用
标签: swift segue uistoryboardsegue