ビュー同士のデータの受け渡しで、前のビュー(ViewController)から次のビュー(NextViewController)へ画面遷移して、NextViewControllerで入力したデータを前のビューに受け渡したいことがあります。
まず、ViewControllerで、@IBAction func returnToMe(segue: UIStoryboardSegue)というメソッドを作って置きます。
次にNextViewControllerで戻るためのボタンを設置して、そのボタンからコントロールキーを押しながらStoryboard上のNextViewControllerの上にある「Exit」まで線を伸ばします。
するとreturnToMeメソッドが表示されますので選択します。
returnToMeメソッドの中身はサンプルを見て頂ければわかるように、segue.sourceにNextViewControllerのインスタンスが入っているので、それを使ってデータを取り出します。
知っていれば簡単ですが、なかなかわからないものです。
ViewController.swift
class ViewController: UIViewController {
@IBOutlet weak var lblDestination: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
//前のビューから戻ってきた時に呼ばれるメソッド
@IBAction func returnToMe(segue: UIStoryboardSegue) {
//前のビューを取得する
let view = segue.source as! NextViewController
//前のビューからデータを取り出して表示する
self.lblDestination.text = view.txtSource.text
}
}
NextViewController.swift
class NextViewController: UIViewController {
//ユーザが入力するテキストボックス
@IBOutlet weak var txtSource: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
