2017-01-31 3 views
1

Aktualisierung Wenn ich meine UILabel Text in meine UITableViewCell wie folgt aktualisiert:Swift - UITableViewCell springt, wenn UILabel Text

self.label.text = "label text" 

Alles funktioniert super ....

Aber, wenn ich meine Etiketten Text aktualisieren vom Struct Array bewirkt es die UITableView manchmal springen, wenn nach oben scrollen nach oben, nicht nach unten, wenn scrollen, aber wenn ich scrollen nach oben ...

Kann nicht verstehen, warum dies geschieht ....

Struct, hinzugefügt wird, um Daten aus den Ergebnissen, die ich vom Server

struct ContentStruct { 
    var textLink : String? = "" 
    var title : String? = "" 
    var text : String? = "" 
} 

CellForRow

let postData = cellContentArray[(indexPath as NSIndexPath).section] 

cell.binData(content: postData) 

TableViewCell

erhalten
func binData(content: ContentStruct) { 
    self.titleLabel.text = content.title 
    self.text.text = "yytytytyt"//text 
    self.uuidLabel.text = "yhhyhyhyyh" 
    } 

Ich bin dergleichen so der Zelle Größe ändern: Im ViewDidLoad:

tableView.rowHeight = UITableViewAutomaticDimension 

Und dann das:

func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat { 
    let height = self.heightAtIndexPath.object(forKey: indexPath) 
    if ((height) != nil) { 
     return CGFloat(height as! CGFloat) 
    } else { 
     return UITableViewAutomaticDimension 
    } 
} 

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { 
    let height = cell.frame.size.height 
    self.heightAtIndexPath.setObject(height, forKey: indexPath as NSCopying) 
} 

Irgendwelche Ideen?

Vielen Dank im Voraus!

+0

Datenquellcode hinzufügen –

+0

@WetSweater Nicht sicher, was Sie damit meinen? tableView-Code? oder der Struct Code? Ich füge Daten zu der Struktur von den Ergebnissen hinzu, die ich vorher von meinem Server heruntergeladen habe ... Und dann aktualisiere ich die TableViewCell normalerweise ... Es ist seltsam, weil es nur auf der dritten/vierten Zelle von der Unterseite nicht auf irgendwelchen anderen geschieht. Es ist ein winziger Blitz, den ich ziemlich nervig finde –

+0

Der vollständige Inhalt der cellForRow-Methode würde helfen, einen Vorschlag zu machen. Treiben Sie die tableView irgendwo neu? – Stephen

Antwort

0

Ich habe festgestellt, dass solche Sprünge auftreten, wenn Ihre dynamischen Zellenhöhen nicht mit Ihrer geschätzten Zeilenhöhe übereinstimmen. Am einfachsten ist es, eine feste Zellenhöhe zu haben oder die Höhe individuell pro Zelle zu berechnen.

+0

Ja, ich stimme zu, es ist viel einfacher, feste Zellenhöhen zu haben, aber in diesem Fall kann ich nicht ... Gib mir 1 Minute und ich füge oben hinzu, wie ich die Größe der Zelle verändere. –

+0

Aber die seltsamen Dinge ist der Sprung passiert nicht, wenn ich das Etikett mit einem String wie diese "String" aktualisieren .... –

Verwandte Themen