40855


Xcode 9.2(9C40b)  
を使ってSwiftでUITableViewを使ってリスト表示しています。

ボタンを押すとリストの一番上にスクロール(animated: true)させて移動させたいと思っています。

[code]

    @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) // ・・・①
    }
    
[/code]

実行させるとボタンを押したらセルが半分ずつ（おおよそ）上に行くのみでした。  
そして、①の結果は「0.0」

何か勘違いしているのでしょうか？検索で色々なサイトを見ているのですが、いまいち理解できておらず。  
ご存知の方、対処法をご教示お願いします。

[解決]  
Alamofireを使ってテーブルリストの項目を取得していますが、テーブルを一番上の指示を出したすぐにAlamofireでリストの更新を行うと、テーブルを一番上にanimetedでスクロールしている途中で止まっていたようです。  
Alamofireのクロージャーの中で、テーブルの一番上の指示を出したところ解決しました。


CC BY-SA 3.0
2018-01-10T05:54:43.170
40854
2018-01-10T13:56:44.803
2018-01-10T13:56:44.803
8593
8593
question
swift uitableview
Swift4でUITableviewの表示を一番上にスクロールさせるには


<https://stackoverflow.com/questions/724892/uitableview-scroll-to-the-top>

こちらを試すのがよいと思います。

Swift4なので  
<https://stackoverflow.com/a/46631319/1979953>

引用：

[code]

    //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)
    
[/code]

が該当します。

余談ですが、変数名を `ContantsTable`, メソッド名を`ToTopTable` にされていますが、  
それぞれ `contantsTable`, `toTopTable` と頭文字を小文字にするのが一般的です。


CC BY-SA 3.0
2018-01-10T06:08:16.057
40855
2018-01-10T06:15:29.687
2018-01-10T06:15:29.687
9008
9008
40854
answer