Mengirim dan Menerima Data Antar ViewController Menggunakan Segue

Idris
2 min readAug 3, 2019

--

Pengantar

Pada umumnya, perpindahan dari storyboard ke storyboard lainnya di pemrograman Swift menggunakan Segue. Titik awal dari sebuah Segue bisa dalam bentuk tombol, baris tabel, ataupun identifier yang dibuat pada sebuah Controller. Titik akhir dari sebuah Segue biasanya Controller yang ingin ditampilkan. Untuk lebih jelas, bisa perhatikan gambar di bawah ini:

Apple Developer Documentation

Tandah panah penghubung antara dua Controller tersebut adalah Segue. Terkadang, perpindahan dari satu Controller ke Controller yang lain kita membawa data dari Controller asal. Bagaimana caranya? Berikut adalah penjelasannya.

Pembahasan

Pada gambar di atas, gambar pertama terdapat sebuah form input teks yang kemudian ketika diklik submit, maka kata yang sudah diketik tadi akan muncul sebagai hasil di gambar ke dua.

Pada file Controller pertama tambahkan kode sebagai berikut:

import UIKit
class ViewController: UIViewController {
@IBOutlet weak var inputTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func submitClicked(_ sender: UIButton) {
performSegue(withIdentifier: "GoToSecond", sender: nil)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "GoToSecond"{
let destinationVC = segue.destination as! SecondViewController
destinationVC.resultText = inputTextField.text!
}
}

}

Ketika tombol submit diklik, maka akan menjalankan Segue yang memiliki identifier “GoToSecond”. Di sisi lain, buat sebuah fungsi prepare() untuk menyiapkan data yg memiliki identifier “GoToSecond” yang nanti akan dikirim ke titik tujuan Segue.

Pada Controller kedua tambahkan kode sebagai berikut:

import UIKit
class SecondViewController: UIViewController {
@IBOutlet weak var resultTextView: UITextView!

var resultText:String = ""
override func viewDidLoad() {
super.viewDidLoad()
resultTextView.text = resultText
}
}

Di Controller pertama tadi, variabel resultText diisi dengan nilai dari form input teks. Kemudian ketika Segue berjalan, maka variabel resultText sudah terisi dengan nilai yang baru. Kemudian variabel resultTextView:UITextView diganti dengan variabel resultText. Maka hasilnya akan sebagai berikut:

--

--