ডেলিগেট কী?
ডেলিগেট হলো একটি সহজ টার্ম যা অবজেক্টের মধ্যে কমিউনিকেশন বোঝায়। এটি অবজেক্ট কানেক্ট করার এবং তাদের মধ্যে কমিউনিকেশনের একটি সহজ পদ্ধতি।
ডেলিগেট কীভাবে কাজ করে?
একটি ডেলিগেট প্রোটোকলের সাহায্যে তৈরি করা হয়। একটি প্রোটোকল ক্লাসের ভেতরে ডিক্লেয়ার করা হয়, যেখানে কিছু ইভেন্ট ঘটবে যা অন্যান্য ক্লাসকে নোটিফাই করা উচিত। প্রোটোকলে ফাংশন ডিক্লেয়ারেশন থাকে এবং এটিকে কলিং ক্লাসে ডিফাইন করা হয়।
ডেলিগেট কীভাবে তৈরি করবেন?
একটি উদাহরণ প্রজেক্ট দিয়ে দেখাব।
স্টেপসমূহ:
- FirstViewController নামে একটি ক্লাস তৈরি করুন, আরেকটি SecondViewController নামে। Storyboard-এ তাদের রেসপেক্টিভ ভিউ কন্ট্রোলার তৈরি করুন।
- SecondViewController-এ একটি প্রোটোকল ডিক্লেয়ার করুন। প্রোটোকল যেকোনো ক্লাস বা অবজেক্টের বাইরে ডিক্লেয়ার করা হয়।
protocol SecondViewControllerDelegate {
func buttonPressedInVC2()
}
- SecondViewController-এ, আমরা জাস্ট তৈরি করা ডেলিগেটের একটি অপশনাল অবজেক্ট তৈরি করব।
var delegate: SecondViewControllerDelegate?
- SecondViewController-এ কোনো ইভেন্ট হলে প্রোটোকলে ডিক্লেয়ার করা ফাংশন কল করতে হবে। বাটন প্রেস ইভেন্ট তৈরি করুন।
@IBAction func buttonTapped(_ sender: UIButton) {
self.delegate?.buttonPressedInVC2()
self.navigationController?.popViewController(animated: true)
}
SecondViewController-এ এতটুকুই প্রয়োজন। এখন FirstViewController-এ কাজ করি।
- FirstViewController কে SecondViewControllerDelegate-এ কনফর্ম/ইমপ্লিমেন্ট করুন, এটি অটোমেটিক্যালি প্রোটোকল স্টাব যোগ করতে বলবে।
extension FirstViewController: SecondViewControllerDelegate {
func buttonPressedInVC2() { }
}
- প্রোটোকলে ইমপ্লিমেন্ট করা ফাংশনে সেটি কোড লিখুন যা ডেলিগেট একশন হলে এক্সিকিউট করতে চান। FirstViewController-এ একটি লেবেল তৈরি করুন এবং ডেলিগেট মেথড কল হলে এর টেক্সট চেঞ্জ করুন।
extension FirstViewController: SecondViewControllerDelegate {
func buttonPressedInVC2() {
self.lblOne.text = "Delegate Implemented"
}
}
- শেষ স্টেপ: SecondViewController-এ ডেলিগেট অবজেক্ট অপশনাল তাই নিল থাকবে যতক্ষণ না এসাইন করা হয়। FirstViewController থেকে SecondViewController-এ যাওয়ার সময় সেটি এসাইন করুন। FirstViewController-এ একটি বাটন তৈরি করুন।
@IBAction func goToNextVC(_ sender: Any) {
let vc = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") as! SecondViewController
vc.delegate = self
self.navigationController?.pushViewController(vc, animated: true)
}
- যদি এখনও বুঝতে পারেননি, FirstViewController কে Navigation Controller-এ এম্বেড করতে হবে। অ্যাপ রান করে দেখুন কীভাবে কাজ করে।
