Mengenal Delegation pada Swift
Tak sesulit yang dibayangkan ternyata
Pengantar
Biasanya kalau bermain dengan UITableView
ataupun UICollectionView
yang diletakkan pada UIViewController
pasti akan menemui suatu syntax seperti ini…
self.tableView.delegate = self
Untuk bisa berinteraksi dengan tableView
tadi, misalkan melakukan suatu aksi tertentu ketika salah satu baris pada tableView
telah dipilih maupun akan dihapuskan, maka kita sering kali menggunakan delegation pada tableView
supaya bisa melakukan aksi tersebut, tanpa disadari.
Pembahasan
Secara bahasa, delegation atau pendelegasian adalah penyerahan tugas kepada pihak lain. Dalam konteks pemrograman iOS baik menggunakan Swift ataupun Objective-C, pendelegasian disini adalah menyerahkan tugas dari objek tertentu ke objek yang lain, misalkan untuk melakukan suatu aksi terhadap data yang ditampilkan di sebuah UITableView
, maka seringkali kita membutuhkan UIViewController
sebagai delegasi dari UITableView
untuk melakukan aksi tertentu, misalkan memilih salah satu item pada UITableView
. Singkatnya seperti itu.
Gambaran/contoh paling sederhana dalam pemanfaatan delegation pada Swift, misalkan menyimulasikan hubungan antara Bos
dan Sekretaris
dalam pendelegasian untuk mengatur jadwal meeting, secara si Bos
terlalu sibuk sehingga tidak sempat mengatur jadwal meetingnya sendiri 😛
Agar si Sekretaris
bisa mengatur jadwal meeting, maka kita tentukan dulu gimana si Sekretaris
bekerja
protocol SekretarisDelegate {
func aturJadwalMeeting()
}
Lalu, kita implementasikan protokol tersebut agar si Sekretaris
bisa mengatur jadwal meeting…
class Sekretaris: SekretarisDelegate {
func aturJadwalMeeting() {
print("Whoa, aku mengatur jadwal meetingnya bos nih 😛 ")
}
}
Klas Bos
didefinisikan sebagai berikut, karena dia punya delegasi buat mengatur meeting, maka dia punya attribut delegate
misalkan.
class Bos {
// bos bisa ngapain aja sama punya apa dideklarasikan disini // karena si Bos sibuk gak sempat atur meeting, punya delegate deh
var delegate: SekretarisDelegate?
}
Sekarang, kita coba buat Sekretaris
dan Bos
nya.
let mario = Bos()
let tina = Sekretaris()
Lalu, si Mario menyuruh si Tina supaya bisa mengatur jadwal meetingnya, dan si Mario pun bisa mengatur jadwal meetingnya dengan bantuan Tina.
mario.delegate = tina
mario.delegate?.aturJadwalMeeting()// output: Whoa, aku mengatur jadwal meetingnya bos nih 😛
Recap
Kira-kira begitu gambaran sederhana tentang proses delegation. UITableView
, UICollectionView
, ataupun yang lain pasti memiliki mekanisme delegation yang cara kerjanya mirip seperti simulasi sederhana diatas. Semoga bermanfaat 😄