ich Benutzer lassen in tableView
Reihen neu zu ordnen. Da dieses Ereignis Inhalt betrifft - sollten einige numerischen Werte in Zellen aktualisiert werden - in allen anderen Reihen, ich reloadData
in moveRowAtIndexPath
nennen. Und dann treten seltsame Effekte auf.Wie nachladen nach Tableview eine Zeile Nachbestellung? Zeilen variabler Höhe
I.e. Die Zellen scheinen sich beim Berühren des Draggers zu überlappen, und einige Zellen beginnen sich auf und ab zu bewegen. Es ist wichtig zu wissen, dass die Höhe der Zellen variiert.
Das seltsame, dass, wenn ich reloadData
von moveRowAtIndexPath
entfernen, dann verschwinden alle diese Phänomene. Nur der Inhalt ist ungültig.
Also, wie soll ich Daten nach der Neuordnung neu laden?
UPDATE: Was habe ich inzwischen Neukonfiguration Zellen in viewDidLayoutSubviews
statt Anruf reloadData
Ende des moveRowAtIndexPath
getan. Und es funktioniert 90% wie ich es erwarte, aber immer noch sind Zeilen manchmal etwas höher, die sie sollten.
override func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
//..
reorderOccured = true
}
override func viewDidLayoutSubviews() {
if reorderOccured {
for cell in tableView.visibleCells() as! [UITableViewCell] {
let ip = tableView.indexPathForCell(cell)
if ip != nil {
self.configureCell(cell, indexPath: ip!)
}
}
reorderOccured = false
}
}
Sie könnten dies auch interessant finden: http://stackoverflow.com/questions/30758111/an-extra-view-appears-in-cell-when-pressing-reorder-dragger-why –