質問: Xcode 9.2(9C40b) を使ってSwiftでUITableViewを使ってリスト表示しています。 ボタンを押すとリストの一番上にスクロール(animated: true)させて移動させたいと思っています。 ``` @IBOutlet weak var ContantsTable: UITableView! @IBAction func ToTopTable(sender: AnyObject) { ContantsTable.setContentOffset(CGPoint(x:0, y:-ContantsTable.contentInset.top), animated: true) print(ContantsTable.contentInset.top) // ・・・1 } ``` 実行させるとボタンを押したらセルが半分ずつ(おおよそ)上に行くのみでした。 そして、1の結果は「0.0」 何か勘違いしているのでしょうか?検索で色々なサイトを見ているのですが、いまいち理解できておらず。 ご存知の方、対処法をご教示お願いします。 [解決] Alamofireを使ってテーブルリストの項目を取得していますが、テーブルを一番上の指示を出したすぐにAlamofireでリストの更新を行うと、テーブルを一番上にanimetedでスクロールしている途中で止まっていたようです。 Alamofireのクロージャーの中で、テーブルの一番上の指示を出したところ解決しました。
回答: こちらを試すのがよいと思います。 Swift4なので 引用: ``` //self.tableView.reloadData() if you want to use this line remember to put it before let indexPath = IndexPath(row: 0, section: 0) self.tableView.scrollToRow(at: indexPath, at: .top, animated: true) ``` が該当します。 余談ですが、変数名を `ContantsTable`, メソッド名を`ToTopTable` にされていますが、 それぞれ `contantsTable`, `toTopTable` と頭文字を小文字にするのが一般的です。