パパエンジニアのアウトプット帳

30歳に突入した1児のパパエンジニアのブログ

【Swift初心者】TableViewで無限スクロール

TableViewを無限スクロールしたかった。


本当はライブラリないか探していたんだけど、有名どころはない感じかな?

実装方法がそんなに難しくなさそうなので、自分で実装してみた。


実装は下記のサイトたちを参考にしてscrollViewDidScrollでやった。

qiita.com

github.com


実装してみると初期表示時にも呼ばれてるっぽかった・・・ なので、下記のサイトのようにtableView.draggingで判定した。

qiita.com


でも、これだと一度に複数回APIが呼ばれていたので、読み込み中フラグ持たせて読み込み中に二重でAPIが呼ばれないようにしてみた。

func scrollViewDidScroll(scrollView: UIScrollView) {
      if (nowLoading) {
          return
      }

      if (tableView.dragging) {
          let currentOffset = scrollView.contentOffset.y
          let maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height

          if (maximumOffset - currentOffset) <= 40 {
              let next_page = (items.count / pageSize) + 1
              loadList(next_page)
          }
      }
  }