कोड नीचे दिए गए हैं

class TableViewController: UITableViewController, UITextFieldDelegate {

let fruitsComponents: [String] = ["Apple", "Banana", "Grape", "Pear"]

let fruitsTextField = UITextField(frame: CGRect(x: 100, y: 7.5, width: 50, height: 30))

override func viewDidLoad() {
    super.viewDidLoad()
}

override func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 4
}


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "fruitsCell", for: indexPath)

    cell.textLabel?.text = fruitsComponents[indexPath.row]
    fruitsTextField.backgroundColor = UIColor.darkGray
    fruitsTextField.delegate = self

    cell.addSubview(fruitsTextField)

    return cell
}

1 खंड ठीक है।

4 पंक्तियाँ ठीक है।

कोशिकाओं के लिए शीर्षक सेब, केला, अंगूर, नाशपाती ठीक है।

लेकिन चौथी पंक्ति 'नाशपाती' में केवल 1 सबव्यू जोड़ा जाता है।

प्रश्न1. पंक्तियों में 3 सबव्यू क्यों नहीं जोड़े गए?

प्रश्न2. मैं सभी पंक्तियों के लिए सबव्यू कैसे जोड़ सकता हूं?

धन्यवाद

0
Hoo 13 सितंबर 2018, 09:53

1 उत्तर

सबसे बढ़िया उत्तर

चूंकि आपके पास केवल फल टेक्स्टफिल्ड का एक उदाहरण है, यह केवल एक पंक्ति का सबव्यूव हो सकता है। इसलिए,

  • जब आप इसे पंक्ति 2 में जोड़ते हैं, तो इसे पहली पंक्ति से हटा दिया जाएगा
  • जब आप इसे पंक्ति ३ में जोड़ते हैं, तो इसे दूसरी पंक्ति से हटा दिया जाएगा

और इसी तरह।

मुख्य समस्या यह है कि आपको प्रत्येक cellForRow कॉल में सबव्यू नहीं जोड़ने चाहिए, क्योंकि कोशिकाओं का पुन: उपयोग किया जा रहा है, इसलिए भले ही आपके पास प्रत्येक सेल के लिए एक अलग टेक्स्ट व्यू हो, आप एक से अधिक टेक्स्ट के साथ समाप्त हो सकते हैं प्रत्येक सेल में देखें।

अपना खुद का कस्टम UITableViewCell उपवर्ग बनाना बेहतर है जिसमें एक सबव्यू के रूप में एक टेक्स्ट व्यू होता है, आउटलेट कनेक्ट करें और इसके साथ आगे बढ़ें। आप वेब में कई उदाहरण पा सकते हैं, बस "UITableViewCell उपवर्ग" की जाँच करें

1
Andreas Oetjen 13 सितंबर 2018, 10:08