আমাকে প্রথমে আপনার প্রশ্নের উত্তর দিয়ে শুরু করুন।
আমি কি প্রতিটি ঘরের জন্য নিজস্ব ক্লাস কোড করতে পারি? => হ্যাঁ, আমি এটি বিশ্বাস করি। কমপক্ষে, আমি সেভাবেই করতাম।
আমি কি একটি টেবিলভিউ কনট্রোলার ব্যবহার করতে পারি? => হ্যাঁ, আপনি পারেন। তবে আপনার ভিউ কন্ট্রোলারের অভ্যন্তরে একটি টেবিল ভিউও থাকতে পারে।
আমি কীভাবে বিভিন্ন কক্ষে ডেটা পপুলেট করতে পারি? => শর্তগুলির উপর নির্ভর করে, আপনি বিভিন্ন কক্ষে ডেটা স্থাপন করতে পারেন। উদাহরণস্বরূপ, ধরে নেওয়া যাক আপনি চান যে আপনার প্রথম দুটি সারিটি প্রথম ধরণের কোষের মতো হয়। সুতরাং, আপনি কেবল প্রথম প্রকারের ঘর তৈরি / পুনঃব্যবহার এবং এর ডেটা সেট করেছেন। এটি আরও স্পষ্ট হবে, যখন আমি আপনাকে স্ক্রিন শটগুলি দেখাব তখন আমার ধারণা।
আমি আপনাকে একটি ভিউকন্ট্রোলারের অভ্যন্তরে একটি টেবিলভিউ দিয়ে একটি উদাহরণ দিই। একবার আপনি মূল ধারণাটি বুঝতে পারলে আপনি যেভাবেই চান চেষ্টা ও সংশোধন করতে পারেন।
পদক্ষেপ 1: 3 টি কাস্টম টেবিলভিউসেল তৈরি করুন। আমি এর নাম দিয়েছি, ফার্স্ট কাস্টম টেবিলভিউ সেল, সেকেন্ড কাস্টম টেবিলভিউ সেল, থার্ডকাস্টম টেবিলভিউ সেল। আপনার আরও অর্থপূর্ণ নাম ব্যবহার করা উচিত।
পদক্ষেপ 2: মেইন.স্টরিবোর্ডে যান এবং আপনার ভিউ কন্ট্রোলারের ভিতরে টেবিলভিউটি টানুন এবং ফেলে দিন। এখন, সারণী দর্শনটি নির্বাচন করুন এবং পরিচয় পরিদর্শকের কাছে যান। "প্রোটোটাইপ ঘর" 3 এ সেট করুন Here এখানে, আপনি কেবলমাত্র আপনার টেবিলভিউকে বলেছেন যে আপনার কাছে 3 বিভিন্ন ধরণের কোষ থাকতে পারে।
পদক্ষেপ 3: এখন, আপনার টেবিলভিউতে এবং পরিচয় পরিদর্শকতে 1 ম ঘরটি নির্বাচন করুন, কাস্টম শ্রেণীর ক্ষেত্রে "ফার্স্টকাস্টম টেবিলভিউসেল" রাখুন এবং তারপরে অ্যাট্রিবিউট ইন্সপেক্টরটিতে সনাক্তকারীকে "ফার্স্ট কাস্টমসেল" হিসাবে সেট করুন।
অন্য সকলের জন্য একই করুন - তাদের কাস্টম ক্লাসগুলি যথাক্রমে "সেকেন্ডকাস্টম টেবিলভিউ সেল" এবং "থার্ডকাস্টম টেবিলভিউ সেল" হিসাবে সেট করুন। সনাক্তকারীদের পর পর দ্বিতীয়বারের মতো কাস্টমসেল এবং তৃতীয় কাস্টমসেল হিসাবে সেট করুন।
পদক্ষেপ 4: কাস্টম সেল ক্লাসগুলি সম্পাদনা করুন এবং আপনার প্রয়োজন অনুসারে আউটলেটগুলি যুক্ত করুন। আপনার প্রশ্নের ভিত্তিতে আমি এটি সম্পাদনা করেছি।
পিএস: আপনার আউটলেটগুলি শ্রেণির সংজ্ঞার আওতায় রাখা দরকার।
সুতরাং, ফার্স্ট কাস্টম টেবিলভিউসেল.স্ফিটে, এর অধীনে
class FirstCustomTableViewCell: UITableViewCell {
আপনি আপনার লেবেল এবং চিত্র দেখার আউটলেট রাখবেন।
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
এবং সেকেন্ড কাস্টম টেবিলভিউ সেল.সুইফ্টে দুটি লেবেল যুক্ত করুন-
import UIKit
class SecondCustomTableViewCell: UITableViewCell {
@IBOutlet weak var myLabel_1: UILabel!
@IBOutlet weak var myLabel_2: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
এবং থার্ডকাস্টম টেবিলভিউ সেল.সুইফ্টটির মতো দেখতে হবে-
import UIKit
class ThirdCustomTableViewCell: UITableViewCell {
@IBOutlet weak var dayPicker: UIDatePicker!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
পদক্ষেপ 5: আপনার ভিউকন্ট্রোলারে আপনার টেবিলভিউয়ের জন্য একটি আউটলেট তৈরি করুন এবং স্টোরিবোর্ড থেকে সংযোগটি সেট করুন। এছাড়াও, আপনাকে প্রোটোকল তালিকা হিসাবে শ্রেণি সংজ্ঞাতে UITableViewDelegate এবং UITableViewDataSource যুক্ত করতে হবে। সুতরাং, আপনার শ্রেণির সংজ্ঞাটি দেখতে হবে-
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
এর পরে আপনার টেবিল দৃশ্যের UITableViewDelegate এবং UITableViewDatasourceটিকে আপনার নিয়ামকের সাথে সংযুক্ত করুন। এই মুহুর্তে আপনার ভিউকন্ট্রোলআরউইউফ্টটি দেখতে হবে-
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
পিএস: আপনি যদি ভিউকন্ট্রোলারের ভিতরে কোনও টেবিল ভিউয়ের পরিবর্তে কোনও টেবিলভিউ নিয়ন্ত্রণকারী ব্যবহার করেন তবে আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন।
পদক্ষেপ।: সেল শ্রেণীর অনুসারে আপনার ঘরে ইমেল ভিউ এবং লেবেলগুলি টানুন এবং ফেলে দিন। এবং তারপরে স্টোরিবোর্ড থেকে তাদের আউটলেটগুলিতে সংযোগ সরবরাহ করুন।
পদক্ষেপ:: এখন, ভিউ কন্ট্রোলারে ইউআইটিবেবলিউডা ডেটাসোর্সের প্রয়োজনীয় পদ্ধতিগুলি লিখুন।
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 3
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
if indexPath.row == 0 {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "firstCustomCell")
//set the data here
return cell
}
else if indexPath.row == 1 {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "secondCustomCell")
//set the data here
return cell
}
else {
let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "thirdCustomCell")
//set the data here
return cell
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}