質問: **【背景】** RealmSwiftを使用しております。 TableViewにてRealmに登録したデータを表示するのに 10秒ほどかかっています。 TableViewにはsectionを使用しております。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/cfc72a18f7954bf2462aefb1f13fc1dd.jpeg) **【やりたいこと】** ある程度表示させたら、新たにクエリを発行して表示させるということがやりたい。 表示させるデータのオブジェクトを作り、 新たに表示させるために取得したオブジェクトを下にスライドさせたときに追加する仕組みを考えています。 **【疑問点】** 表示させるオブジェクトを配列に格納し、どんどん追加していけばいいかなと思ったのですが、 一番下にいったときをどうやって判別すればいいのでしょうか? おそらくUITableViewに一番下にいったときみたいなメソッドがあるのかなと思いましたが、よくわかりませんでした。 ちなみに、できるだけUIActivityIndicatorなど表示させずにスムーズに表示させたいです。 けっこうよくある処理だと思うので、もし参考になるコードなどあれば見てみたいです。 よろしくおねがいします。
回答: > > おそらくUITableViewに一番下にいったときみたいなメソッドがあるのかなと思いましたが、よくわかりませんでした。 > > > `TableView`が一番下になった場合のメソッドはありませんが、以下の方法で判定できます。 `TableView`は`UIScrollView`を継承しているので以下のように`UIScrollViewDelegate`をに適合させてUIScrollViewのDelegateメソッドを使用することができます。 ※注意としては`scrollViewDidScroll`メソッドはスクロールする度に呼ばれるので、配列にデータを追加してリロードの処理が複数回呼ばれないように制御する必要が有ります。 ``` class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UIScrollViewDelegate ``` ``` // 以下のUIScrollViewDelegateメソッドでTableViewの位置が一番下に来た時の判定ができます。 func scrollViewDidScroll(scrollView: UIScrollView) { if myTableView.contentOffset.y + myTableView.frame.size.height > myTableView.contentSize.height { print("一番下に到達した時の処理") } } ``` > > TableViewにてRealmに登録したデータを表示するのに > > 10秒ほどかかっています。 > > > 実装を見ていないので指摘はできませんが、10秒かかるのはあまりにも遅いので処理を見直す必要があると思います。