मैं एक निब से एक कस्टम टेबल व्यू सेल बनाने की कोशिश कर रहा हूँ। मैं यहाँ इस लेख की बात कर रहा हूँ । मैं दो मुद्दों का सामना कर रहा हूं।
मैं एक UITableViewCell वस्तु के साथ एक .xib फ़ाइल बनाया है। मैंने एक उप-वर्ग बनाया UITableViewCell
और इसे पुन: प्रयोज्य पहचानकर्ता के रूप में सेल के वर्ग और सेल के रूप में सेट किया ।
import UIKit
class CustomOneCell: UITableViewCell {
@IBOutlet weak var middleLabel: UILabel!
@IBOutlet weak var leftLabel: UILabel!
@IBOutlet weak var rightLabel: UILabel!
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
UITableViewController में मेरे पास यह कोड है,
import UIKit
class ViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {
var items = ["Item 1", "Item2", "Item3", "Item4"]
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - UITableViewDataSource
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let identifier = "Cell"
var cell: CustomOneCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
if cell == nil {
tableView.registerNib(UINib(nibName: "CustomCellOne", bundle: nil), forCellReuseIdentifier: identifier)
cell = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
}
return cell
}
}
यह कोड बिना किसी त्रुटि के अनुपालन करता है, लेकिन जब मैं इसे सिम्युलेटर में चलाता हूं, तो यह ऐसा दिखता है।
स्टोरीबोर्ड में UITableViewController में मैंने सेल को कुछ भी नहीं किया है। खाली पहचानकर्ता और कोई उपवर्ग नहीं। मैंने प्रोटोटाइप सेल में सेल पहचानकर्ता को जोड़ने की कोशिश की और इसे फिर से चलाया लेकिन मुझे वही परिणाम मिला।
मेरे द्वारा सामना की गई एक और त्रुटि है, जब मैंने UITableViewController में निम्न विधि को लागू करने का प्रयास किया।
override func tableView(tableView: UITableView!, willDisplayCell cell: CustomOneCell!, forRowAtIndexPath indexPath: NSIndexPath!) {
cell.middleLabel.text = items[indexPath.row]
cell.leftLabel.text = items[indexPath.row]
cell.rightLabel.text = items[indexPath.row]
}
जैसा कि लेख मैंने कहा में दिखाया गया है मैं बदल cell
पैरामीटर के प्रकार के फार्म UITableViewCell
करने के लिए CustomOneCell
जो UITableViewCell की मेरी उपवर्ग है। लेकिन मुझे निम्नलिखित त्रुटि मिलती है,
चयनकर्ता की तालिका के साथ ओवरराइडिंग विधि: willDisplayCell: forRowAtIndexPath: 'में असंगत प्रकार' (UITableView !, CustomOneCell !, NSIndexPath!) -> () '' है।
किसी को भी इन त्रुटियों को हल करने का कोई विचार है? ये ऑब्जेक्टिव-सी में ठीक काम कर रहे थे।
धन्यवाद।
संपादित करें: मैंने अभी देखा अगर मैं सिम्युलेटर के परिदृश्य के प्रति उन्मुखीकरण को बदल देता हूं और इसे वापस चित्र में बदल देता हूं, तो कोशिकाएं दिखाई देती हैं! मैं अभी भी समझ नहीं पाया कि क्या चल रहा है। यदि आप एक त्वरित नज़र के लिए समय है, तो मैंने समस्या का प्रदर्शन करते हुए एक Xcode प्रोजेक्ट यहाँ अपलोड किया ।