2015-06-15 16 views
6

मैं समस्या आ रही है overlaps मैं अपने स्टोरीबोर्ड में सेल के दो प्रकार है। जब मैं स्क्रॉल करता हूं, तो पाठ कुछ कोशिकाओं में ओवरलैप होता है। मैं सबकुछ कोशिश करता हूं लेकिन मुझे नहीं पता कि और कैसे करना है। मददTableViewCell मेरी TableViewCell</p> <p>के साथ पाठ

public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    { 

     var storeNew = systemsBlog.getStore(listNews[indexPath.row].getIdStore()) 
     var newNotice = listNews[indexPath.row] 

     let cell = tableView.dequeueReusableCellWithIdentifier("TimelineCell", forIndexPath: indexPath) as? TimelineCell 

       cell!.nameLabel.text = storeNew.getName() 
       cell!.postLabel?.text = newNotice.getText() 
       cell!.postLabel?.numberOfLines = 0 
       cell!.dateLabel.text = newNotice.getDate() 
       cell!.typeImageView?.tag = indexPath.row; 
       return cell! 
} 



class TimelineCell : UITableViewCell { 

    @IBOutlet var nameLabel : UILabel! 
    @IBOutlet var postLabel : UILabel? 
    @IBOutlet var dateLabel : UILabel! 

    override func awakeFromNib() { 
    postLabel?.font = UIFont(name: "Roboto-Thin", size: 14) 
    } 

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

enter image description here

+0

मैं TimelineCell देख सकते हैं जहां अन्य प्रकार है? – Icaro

+0

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

+0

@lcaro, दूसरे प्रकार का मैं उपयोग नहीं करता क्योंकि अब मैं इस समस्या को हल करने का प्रयास करता हूं। – Carol

उत्तर

5

मैं इस समस्या को ठीक कर सकते हैं। स्टोरीबोर्ड में, लेबल ने "क्लेयर ग्राफिक्स कॉन्टेक्स्ट" को अनचाहे किया है। मैंने जांच की और अब हल हो गया! सहायता के लिए धन्यवाद! शून्य करने के लिए

+0

कई हैक्स का प्रयास किया। केवल इस साधारण चीज में मदद मिली। धन्यवाद। – Bindi

0

मैंने पहले भी मेरी UITableViews में से एक के साथ एक समान मुद्दा था के लिए बहुत बहुत धन्यवाद। ऐसी चीजें हैं जो इसका कारण बन सकती हैं, लेकिन शायद यह वही बात है जो मेरे साथ हुई थी।

मुझे लगता है कि आप एक कस्टम tableViewCell प्रयोग कर रहे हैं। क्या हो रहा है जब आप सेल के पाठ को सेट करते हैं, तो यह उस पाठ के साथ एक लेबल दृश्य जोड़ता है। अब कहें कि आप टेबलव्यू के माध्यम से स्क्रॉल करते हैं और वह सेल गायब हो जाता है। आपको लगता है कि सेल का पुन: उपयोग के लिए गए थे और आप इच्छित पाठ करने के लिए फिर से subview से लेबल को नहीं निकाला, या उस लेबल का पाठ सेट करते हैं, आप उस पर पिछले एक लेबल के साथ tableviewcell पुन: उपयोग और नए के साथ एक नया लेबल जोड़ना होगा टेक्स्ट को ओवरलैप करने के लिए टेक्स्ट।

मेरे सुझाव वाकई TimelineCell कक्षा में subviews के रूप में UILabels जोड़ने जब तक कोई लेबल मौजूद नहीं रखते बनाने के लिए किया जाएगा। यदि कोई लेबल उस लेबल के पाठ को संपादित करता है जो सेल के नहीं है।

+0

हाय, टायलर है। मैं सेल में लेबल नहीं जोड़ता हूं। मेरे पास स्टोरीबोर्ड पर लेबल है और केवल टेक्स्ट सेट करें। – Carol

0

प्रति apple documentation के रूप में:

तालिका दृश्य के tableView के डेटा स्रोत कार्यान्वयन: cellForRowAtIndexPath: जब एक सेल पुन: उपयोग हमेशा सभी सामग्री रीसेट करना चाहिए।

ऐसा लगता है आपकी समस्या यह है कि आप हमेशा नहीं, postLabel की स्थापना यह अन्य कोशिकाओं के शीर्ष पर लिखने के लिए पैदा कर रहा है कि, इस प्रयास करें:

//reuse postLabel and set to blank it no value is returned by the function  
let cell = tableView.dequeueReusableCellWithIdentifier("TimelineCell", forIndexPath: indexPath) as? TimelineCell 

      cell!.nameLabel.text = storeNew.getName() 
      if newNotice.getText() != nil{ 
       cell!.postLabel.text = newNotice.getText() 
      } else {cell!.postLabel.text = ''} 
      cell!.postLabel.numberOfLines = 0 
      cell!.dateLabel.text = newNotice.getDate() 
      cell!.typeImageView?.tag = indexPath.row; 
      return cell! 
} 

//Make postLabel mandatory and set the font details in the xcode 
class TimelineCell : UITableViewCell { 
@IBOutlet var nameLabel : UILabel! 
@IBOutlet var postLabel : UILabel! 
@IBOutlet var dateLabel : UILabel! 

override func awakeFromNib() { 
//set this in xcode 
} 

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

यह भी सुनिश्चित करें कि आप किसी भी यूआई बनाने नहीं कर रहे हैं तत्व और सेल में संलग्न, जैसे कि आप सेल को रीसायकल करने से पहले इसे निपटाने की जरूरत है। अपने tableView युक्त देखें नियंत्रक में

override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tableView.rowHeight = UITableViewAutomaticDimension 
     self.tableView.estimatedRowHeight = 44.0 // Set this value as a good estimation according to your cells 
} 

:

+0

धन्यवाद Icaro, लेकिन मुझे अभी भी समस्या है .. – Carol

0

आप सेट करने का प्रयास कर सकते हैं।

यकीन में लेआउट की कमी अपने TimelineCell एक स्पष्ट ऊंचाई की कमी की लाइन

एक अन्य विकल्प का जवाब परिभाषित करें: ViewController कि आपके tableView शामिल में

tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
return 44.0 // Your height depending on the indexPath 
} 

हमेशा और, मुझे लगता है , tableView का UITableViewDelegate

आशा है कि इससे

0

सेट सेल कि कुछ त्रुटि ठीक कर देंगे। समारोह tableView (_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

var cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as? ImageCellTableViewCell 
    cell = nil 
    if cell == nil { 
     cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for:indexPath) as? ImageCellTableViewCell 
    } 
    cell.yourcoustomtextTextLabel.text = "this is text" 
    cell.yourcoustomtextImageView.image = image 
    return cell 
} 
संबंधित मुद्दे