我在Swift中遇到UITableView问题。表中包含歌词。每个单元格都是一个歌词类。我知道我必须关注哪个索引,所以我将当前的歌词显示为红色,其余的显示为黑色。

到目前为止还好。但是,当使用scrollToRow时,在表格开始向下滚动到视图外部的歌词之前,它运行良好。一旦UITableView开始在视图外滚动,它将开始跳转。

知道如何使其平滑滚动到当前单元格而不会跳转吗?

这是我使表格转到所需歌词的方式:

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()
}


或者,如果我可以通过滚动表格的滚动视图(而不是其委托scrollToRow)将歌词单元格保持在中央。

最佳答案

更改此行以将animated设置为true

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


这将导致单元格平滑滚动。我还要考虑是否需要在此处重新加载tableView数据,因为这也会导致滚动问题,例如@rmaddy mentioned

10-08 05:07