2017-08-31 3 views
0

Ich bin mit Problem konfrontiert mit UITableView in Swift. Tabelle enthält Liedtexte. Jede Zelle ist eine lyrische Klasse. Ich weiß, auf welchen Index ich mich konzentrieren muss, also zeige ich den aktuellen Text in Rot und den Rest in Schwarz.UITableView auf scrollToRow springen?

Alles in Ordnung so weit. Aber wenn Sie scrollToRow verwenden, funktioniert es gut, bevor die Tabelle beginnt, zu Songtexten außerhalb der Ansicht zu scrollen. Sobald der UITableView beginnt, außerhalb der Ansicht zu scrollen, beginnt er zu springen.

Gibt es eine Idee, wie man es problemlos in die aktuelle Zelle scrollen kann, ohne zu springen?

Hier ist, wie ich die Tabelle auf die gewünschte Lyrik gehen machen:

let lcCell = IndexPath(row: (vc_lyrics.sharedInstance().lyric_time[seconds]?.index)!, section: 0) 

DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { 
    vc_lyrics.sharedInstance().tableView.scrollToRow(at: lcCell, at: .none , animated: false) 
    vc_lyrics.sharedInstance().tableView!.reloadData() 
} 

Oder wenn ich durch Scrollen der Scroll der Tabelle, die die lyrische Zelle in der Mitte zu halten, nicht seine Delegaten scrollToRow.

+1

Rufen Sie 'reloadData' nicht sofort nach dem Aufruf von' scrollToRow' auf. Das verursacht das Bildlaufproblem. – rmaddy

+0

@maddy danke, aber seine Lyrics-Sync-Tabelle muss ich die Tabellendaten neu laden, um die Liedtexte Farben in x Sekunden zu ändern – Jack

Antwort

0

Ändern Sie diese Zeile animated zu true einzustellen:

vc_lyrics.sharedInstance().tableView.scrollToRow(at: lcCell, at: .none , animated: true) 

Dies wird die Zellen verursachen glatt blättern. Ich würde auch darüber nachdenken, ob Sie die tableView Daten hier neu laden müssen, weil das Scroll-Probleme auch als @rmaddy mentioned verursachen kann.

Verwandte Themen