2017-08-31 9 views
0

私はSwiftのUITableViewで問題に直面しています。表に歌詞が含まれています。各セルは歌詞クラスです。どのインデックスに焦点を当てるのか分かりますので、現在の歌詞を赤で表示し、残りを黒で表示します。UITableViewがscrollToRowにジャンプしますか?

これまでのところ大丈夫です。しかし、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、テーブルのscrollviewをスクロールすることにより、中央に歌詞セルを維持することができない場合:ここでは

は、私は、テーブルが希望歌詞に行かせる方法です。

+1

'scrollToRow'を呼び出した直後に' reloadData'を呼び出さないでください。これはスクロールの問題を引き起こしています。 – rmaddy

+0

@maddyありがとう、しかし、その歌詞の同期テーブル私はx秒で歌詞の色を変更するには、テーブルのデータをリロードする必要があります – Jack

答えて

0

変更trueanimatedを設定するには、この行:

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

これは、細胞がスムーズにスクロールするようになります。 tableViewのデータを再読み込みする必要があるかどうかについても考えています。スクロールの問題の原因になる可能性もあります(@rmaddy mentioned)。

関連する問題