2017-09-20 3 views
0

Ich versuche, die Tabelle zu scrollen, um die letzte Zelle anzuzeigen. Ich benutze scrollToRowAtIndexPath Bottom-Methode, aber es dauert zu viel Zeit. Wie kann ich dieses Problem beheben?ScrollToRowAtIndexPath dauert zu viel Zeit

+0

Ihre 'cellForRowAtIndexPath' vielleicht zu lange nehmen, was machst du da drin? – EmilioPelaez

+0

Machst du es in der Hauptwarteschlange? –

+0

Führen Sie Ihre App mit Profiler und sehen, was zu viel Zeit braucht, dann beheben Sie das. – Vladimir

Antwort

0

mit einer benutzerdefinierten Zeit animieren, können Sie diesen Code verwenden können:

tableView.layoutIfNeeded() 
var offset = tableView.contentSize.height 

let offsetPoint = CGPoint(x: 0, y: offset) 

UIView.animate(withDuration: 0.1, animations: { 
    tableView.setContentOffset(offsetPoint, animated:false) 
}) 

Dazu 0.1 mit der Anzahl der Sekunden ersetzen können Sie mit den Scroll animieren möchten.

EDIT:

Wenn Sie wollen keine Animation, die Sie auch versuchen können:

let lastSectionIndex = tableView.numberOfSections() - 1 
let lastRowIndex = tableView.numberOfRows(inSection: lastSectionIndex) - 1 

tableView.scrollToRow(at: IndexPath(row: lastRowIndex, section: lastSectionIndex), at: .top, animated: false) 
+0

Was ist, wenn die Zeilen unterschiedliche Höhen haben? – sCha

+0

ok. Antwort bearbeiten, vorausgesetzt, Sie verwenden 'UITableViewAutomaticDimension'. –

+0

Dies sieht wie eine langsame Neuimplementierung von 'UITableView.rectForRow (at:)' aus. –