2016-12-16 2 views
0

Ich habe eine UITableView-Zelle. Die Anzahl der Zeilen ist normalerweise 6, aber wenn ein bestimmtes Ereignis ausgelöst wird, wird dies auf 7 erhöht und ich möchte eine neue Zeile mit Animation am unteren Rand einfügen. Derzeit ist mein Code wie folgt:UITableView scrollt nicht rechtzeitig, um die Animationszellenanimation zu sehen

(Datenquelle aktualisiert wurde)

tableView.beginUpdates() 
tableView.insertRows(at: [IndexPath(row:6, section: 0)], with: .left) 
tableView.endUpdates() 
tableView.scrollToRow(at: IndexPath(row:6, section: 0), at: .top, animated: true) 

Dies fügt die Zeile und rollt auf den Boden, aber ich kann die Zelle Animation nicht richtig sehen. Es ist eher so, als ob es die Zelle einfügt und dann weiter scrollt, sodass ich es nicht von links animieren sehe. Was mache ich hier falsch?

Antwort

0

Dieser Code zum Löschen einer Zeile aus der Tabellenansicht mit der linken Animation. Sie können versuchen, mit Zeile hinzufügen und Tabellenansicht im Hauptthread zu aktualisieren.

tableview.beginUpdates() 
    var indexPathsToDeleteForAnimation: [NSIndexPath] = [] 
    var numOfCellsToRemove = ArrayOfItemsToRemove ?? 0 

    // Do your work here 
    while numOfCellsToRemove > 0 { 
     // ...or here, if you need to add/remove the same amount of objects to/from somewhere 
     indexPathsToDeleteForAnimation.append(NSIndexPath(forRow: selectedCellIndex+numOfCellsToRemove, inSection: 0)) 
     numOfCellsToRemove -= 1 
    } 
    tableview.deleteRowsAtIndexPaths(indexPathsToDeleteForAnimation, withRowAnimation: UITableViewRowAnimation.Right) 
    tableview.endUpdates() 
Verwandte Themen