あるVC(別のVC)から別のVC(firstVC)にテキスト値を渡そうとしています。 secondVCの情報は、firstVCのテキストフィールドのテキスト値を指定します。私はこれを理解するためにドキュメントを使ってみましたが、私は非常に混乱しているか、何か他のものが上がっているにちがいありません。私secondVCでSwift 3.0 Segueを使用してView Controller間で情報を渡す
:予想通りfirstVCに戻っsegueing後
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)
}
は、テキストフィールドは、検索バーのテキストを記入されていません。 (searchBarテキストはnilではありません)私の理解から、ボタンがsecondVCで選択され、performSegueを呼び出すと、prepareForSegueを呼び出してaddressTextField.text値を設定してfirstVCに戻ります。私の論理が正しいかどうかはわかりません。あなたのsecondViewController
var searchedText = ""
@IBAction func savePressed(_ sender: Any) {
performSegue(withIdentifier: "saveSegue", sender: self)
}
であなたのFirstViewController
@IBAction func dismissSearchVC(_ sender: UIStoryboardSegue) {
let sourceVC = sender.source as! viewController2
addressTextField.text = sourceVC.searchBar.text
}
で
navigationControllerを使用していますか?実際にnavigateControllerスタックから 'secondVC'をポップするだけでなく、' firstVC'にセグメンテーションしていますか? 'prepareForSegue'にブレークポイントをドロップし、実際に呼び出されているかどうかを確認してください。 – toddg
私はnavigationControllerを使用していません - ストーリーボードのみを使用します。私はprepareForSegueにブレークポイントを置いて、呼び出されませんでした。これら2つは関連していますか? – Kevin
一般に、前のviewControllerに戻るときは、実際にはsegueを実行していません。モーダルビューセグを閉じるか、viewControllerスタックからビューをポップするかのいずれかです(navigationControllerを使用している場合)。データの受け渡しはもう少し複雑で、これを行うための推奨方法は代理人によるものです。良い情報[ここ](https://medium.com/ios-os-x-development/pass-data-with-delegation-in-swift-86f6bc5d0894) – toddg