मुझे पहले अपने सवालों का जवाब देने के साथ शुरू करते हैं।
क्या मुझे हर सेल के लिए खुद की एक क्लास कोड बनानी होगी? => हां, मेरा ऐसा मानना है। कम से कम, मैं ऐसा ही करूंगा।
क्या मैं एक टेबलव्यू कंट्रोलर का उपयोग कर सकता हूं? => हां, आप कर सकते हैं। हालाँकि, आप अपने व्यू कंट्रोलर के अंदर एक टेबल व्यू भी रख सकते हैं।
मैं विभिन्न कोशिकाओं में डेटा को कैसे आबाद कर सकता हूं? => स्थितियों के आधार पर, आप विभिन्न कोशिकाओं में डेटा को आबाद कर सकते हैं। उदाहरण के लिए, मान लें कि आप चाहते हैं कि आपकी पहली दो पंक्तियाँ पहले प्रकार की कोशिकाओं की तरह हों। तो, आप बस पहले प्रकार की कोशिकाओं का निर्माण / पुन: उपयोग करते हैं और इसे डेटा सेट करते हैं। यह अधिक स्पष्ट होगा, जब मैं आपको स्क्रीन शॉट्स दिखाता हूं, तो मुझे लगता है।
मैं आपको ViewController के अंदर एक TableView के साथ एक उदाहरण देता हूं। एक बार जब आप मुख्य अवधारणा को समझ जाते हैं, तो आप वैसे भी कोशिश कर सकते हैं और संशोधित कर सकते हैं।
चरण 1: 3 कस्टम TableViewCells बनाएँ। मैंने इसे नाम दिया, फर्स्ट कस्टूमटेबल व्यूसेल, सेकंड कस्टूमटेबल व्यूसेल, थर्ड कस्टूमटेबल व्यूसेल। आपको अधिक सार्थक नामों का उपयोग करना चाहिए।
चरण 2: Main.storyboard पर जाएं और अपने व्यू कंट्रोलर के अंदर एक TableView को खींचें और छोड़ें। अब, तालिका दृश्य चुनें और पहचान निरीक्षक पर जाएं। "प्रोटोटाइप सेल" को 3 पर सेट करें। यहां, आपने अपने टेबल व्यू को बताया कि आपके पास 3 अलग-अलग प्रकार के सेल हो सकते हैं।
चरण 3: अब, अपने तालिका दृश्य में 1 सेल का चयन करें और पहचान निरीक्षक में, "FirstCustomTableViewCell" को कस्टम वर्ग फ़ील्ड में रखें और फिर पहचानकर्ता को विशेषता निरीक्षक में "FirstCustomCell" के रूप में सेट करें।
अन्य सभी के लिए भी ऐसा ही करें- अपने कस्टम क्लासेस को क्रमशः "SecondCustomTableViewCell" और "ThirdCustomTableViewCell" के रूप में सेट करें। साथ ही पहचानकर्ताओं को दूसरे कस्टमसेल और थर्ड कस्टमूसेल को लगातार सेट करें।
चरण 4: कस्टम सेल कक्षाओं को संपादित करें और अपनी ज़रूरत के अनुसार आउटलेट जोड़ें। मैंने इसे आपके प्रश्न के आधार पर संपादित किया।
पुनश्च: आपको वर्ग परिभाषा के तहत आउटलेट लगाने की आवश्यकता है।
तो, FirstCustomTableViewCell.swift में, के तहत
class FirstCustomTableViewCell: UITableViewCell {
आप अपना लेबल और छवि दृश्य आउटलेट्स लगाएंगे।
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myLabel: UILabel!
और SecondCustomTableViewCell.swift में, दो लेबल जोड़ें जैसे-
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: अपने ViewController में, अपने TableView के लिए एक आउटलेट बनाएं और स्टोरीबोर्ड से कनेक्शन सेट करें। साथ ही, आपको प्रोटोकॉल सूची के रूप में वर्ग परिभाषा में UITableViewDelegate और UITableViewDataSource को जोड़ना होगा। तो, आपकी कक्षा की परिभाषा इस तरह दिखनी चाहिए-
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
उसके बाद अपने कंट्रोलर के टेबल व्यू के UITableViewDelegate और UITableViewDatasource को अटैच करें। इस बिंदु पर आपका viewController.swift जैसा दिखना चाहिए-
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
पुनश्च: यदि आप ViewController के अंदर TableView के बजाय एक TableViewController का उपयोग करने के लिए थे, तो आप इस चरण को छोड़ सकते थे।
चरण 6: सेल वर्ग के अनुसार अपने सेल में छवि दृश्य और लेबल खींचें और छोड़ें। और फिर स्टोरीबोर्ड से उनके आउटलेट के लिए कनेक्शन प्रदान करते हैं।
चरण 7: अब, दृश्य नियंत्रक में UITableViewDatasource की आवश्यक विधियाँ लिखें।
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()
}
}