UITableView এবং UICollectionView এর মৌলিক ধারণা
iOS অ্যাপ্লিকেশন ডেভেলপমেন্টে UITableView এবং UICollectionView হলো দুটি শক্তিশালী কম্পোনেন্ট যা ডেটা প্রদর্শন এবং পরিচালনা করার জন্য ব্যবহৃত হয়। UITableView সাধারণত তালিকা বা এক-ডাইমেনশনাল ডেটা দেখানোর জন্য এবং UICollectionView দুই-ডাইমেনশনাল বা গ্রিড ভিত্তিক ডেটা দেখানোর জন্য ব্যবহৃত হয়। এগুলো খুবই কাস্টমাইজেবল এবং ডেভেলপারদের বিভিন্ন ধরনের কনটেন্ট প্রদর্শন করার সুযোগ দেয়।
UITableView
UITableView একটি ভিউ যা সাধারণত তালিকা প্রদর্শনের জন্য ব্যবহৃত হয়। এটি একটি সিঙ্গেল-কলাম লিস্ট হিসেবে কাজ করে, যেখানে একাধিক সেল (rows) প্রদর্শিত হয়। UITableView ব্যবহার করে আপনি সাধারণ টেবিল, কন্টাক্ট লিস্ট, মেনু আইটেম ইত্যাদি সহজেই তৈরি করতে পারেন।
UITableView এর মৌলিক ধারণা:
- সেল (Cell): UITableView-এর প্রতিটি রো UITableViewCell নামে একটি ক্লাস দ্বারা প্রতিনিধিত্ব করা হয়। এটি কাস্টমাইজ করা যায় এবং বিভিন্ন ধরনের কনটেন্ট ধারণ করতে পারে।
- সেকশন (Section): UITableView একাধিক সেকশনে বিভক্ত করা যেতে পারে, এবং প্রতিটি সেকশনে একাধিক রো থাকতে পারে।
- Header/Footer: প্রতিটি সেকশন একটি হেডার বা ফুটার পেতে পারে যা সেকশনটি ব্যাখ্যা করতে বা আলাদা করতে সাহায্য করে।
UITableView এর কাজের পদ্ধতি:
UITableView সাধারণত দুটি গুরুত্বপূর্ণ প্রোটোকল অনুসরণ করে:
- UITableViewDataSource: ডেটা সোর্স হিসেবে কাজ করে এবং সেলগুলো কীভাবে এবং কতগুলো দেখানো হবে তা নির্ধারণ করে।
- UITableViewDelegate: টেবিল ভিউতে ইউজারের ইন্টারঅ্যাকশন (যেমন সেল নির্বাচন করা) এবং ভিজ্যুয়াল স্টাইলিং পরিচালনা করে।
UITableView উদাহরণ:
class MyTableViewController: UITableViewController {
let items = ["Apple", "Banana", "Cherry", "Date"]
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Fruits"
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1 // সেকশনের সংখ্যা
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count // প্রতিটি সেকশনের রো সংখ্যা
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = items[indexPath.row]
return cell
}
// সেল সিলেক্ট করলে কী হবে
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Selected: \(items[indexPath.row])")
}
}
UITableView এর ব্যবহার উপযুক্ত:
- তালিকা প্রদর্শনের জন্য যেমন কন্টাক্ট লিস্ট, মেনু, বা টাস্ক লিস্ট।
- এক-ডাইমেনশনাল ডেটা দেখানোর জন্য যেখানে রো এবং সেকশন সহজেই বিভক্ত করা যায়।
UICollectionView
UICollectionView হলো একটি কাস্টমাইজেবল এবং ফ্লেক্সিবল ভিউ যা গ্রিড বা কাস্টম লেআউট ভিত্তিক ডেটা প্রদর্শনের জন্য ব্যবহৃত হয়। এটি টেবিল ভিউয়ের মতোই কাজ করে, তবে এটি দুটি ডাইমেনশন (যেমন রো এবং কলাম) এবং আরও জটিল লেআউটের জন্য সুবিধা প্রদান করে।
UICollectionView এর মৌলিক ধারণা:
- Cell: UICollectionView-এর প্রতিটি আইটেম UICollectionViewCell নামে একটি ক্লাস দ্বারা প্রতিনিধিত্ব করা হয়। এটি একটি কাস্টম সেল হতে পারে যা ইমেজ, লেবেল, বা অন্যান্য কনটেন্ট ধারণ করতে পারে।
- Section: UICollectionView একাধিক সেকশনে বিভক্ত হতে পারে, যেমন UITableView।
- Header/Footer: সেকশনগুলোর হেডার এবং ফুটার ভিউ সেট করা যায় যা সেকশনের উপরে বা নিচে প্রদর্শিত হয়।
- Layout: UICollectionView একটি UICollectionViewFlowLayout ব্যবহার করে কাজ করে, যা ভিউগুলো কীভাবে সাজানো হবে তা নির্ধারণ করে। এটি হরিজন্টাল বা ভার্টিকাল লেআউট হতে পারে, এবং ডেভেলপাররা কাস্টম লেআউটও তৈরি করতে পারেন।
UICollectionView এর কাজের পদ্ধতি:
UICollectionView সাধারণত দুটি প্রোটোকল অনুসরণ করে:
- UICollectionViewDataSource: ডেটা সোর্স হিসেবে কাজ করে এবং সেলগুলো কীভাবে এবং কতগুলো দেখানো হবে তা নির্ধারণ করে।
- UICollectionViewDelegate: ভিউতে ইউজারের ইন্টারঅ্যাকশন এবং ভিজ্যুয়াল স্টাইলিং পরিচালনা করে।
- UICollectionViewDelegateFlowLayout: ফ্লো লেআউট ব্যবহার করে সেলগুলোর আকার এবং পজিশন নির্ধারণ করতে ব্যবহৃত হয়।
UICollectionView উদাহরণ:
class MyCollectionViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
let items = ["Apple", "Banana", "Cherry", "Date"]
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Fruits"
collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "cell")
}
// MARK: - Collection view data source
override func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1 // সেকশনের সংখ্যা
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return items.count // সেকশনের প্রতিটি আইটেম সংখ্যা
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
cell.backgroundColor = .lightGray
return cell
}
// সেল সিলেক্ট করলে কী হবে
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print("Selected: \(items[indexPath.row])")
}
// ফ্লো লেআউটে প্রতিটি সেলের আকার সেট করা
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 100, height: 100)
}
}
UICollectionView এর ব্যবহার উপযুক্ত:
- গ্রিড বা দুই-ডাইমেনশনাল লেআউটের জন্য যেমন ইমেজ গ্যালারি, প্রোডাক্ট গ্রিড, বা ক্যালেন্ডার।
- কাস্টম এবং ডাইনামিক লেআউট যেগুলো সহজে কনফিগার করা যায়।
UITableView এবং UICollectionView এর মধ্যে পার্থক্য:
| বৈশিষ্ট্য | UITableView | UICollectionView |
|---|---|---|
| লেআউট | এক-কলাম লিস্ট | মাল্টি-কলাম বা গ্রিড লেআউট সাপোর্ট করে |
| সেল | UITableViewCell | UICollectionViewCell |
| সেকশন | একাধিক সেকশন সাপোর্ট করে | একাধিক সেকশন সাপোর্ট করে |
| Header/Footer | সেকশনের জন্য Header/Footer থাকে | সেকশনের জন্য Header/Footer থাকে |
| কাস্টম লেআউট | সীমিত, সাধারণত সিঙ্গেল-কলাম | কাস্টম লেআউট তৈরি করা যায় |
সারসংক্ষেপ:
- UITableView সাধারণত এক-কলাম তালিকা প্রদর্শনের জন্য উপযুক্ত, যেখানে প্রতিটি সেল এক লাইন ডেটা বা কনটেন্ট দেখায়।
- UICollectionView গ্রিড বা কাস্টম লেআউটের জন্য উপযুক্ত, যেখানে ভিন্ন আকারের এবং স্টাইলের কনটেন্ট প্রদর্শন করা যায়।
UITableView এবং UICollectionView উভয়ই iOS ডেভেলপমেন্টে প্রয়োজনীয় এবং কার্যকরী টুলস, যা ব্যবহার করে ডেভেলপাররা বিভিন্ন ধরনের কনটেন্ট প্রদর্শন এবং ইন্টারেক্টিভ অ্যাপ্লিকেশন তৈরি করতে পারেন।
Read more