higan96技術メモ

https://github.com/higan96

UITableViewで無限スクロール

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
  if indexPath.row == (items.count - 1){
    items += nextItems
    tableView.reloadData()
  }
}

最後のcellに来たらnextItemsを追加しています。

たまにcellForRowAtIndexPathでこの処理をしている記事を見るけど、cellForRowAtIndexPathはあくまで初期化処理に徹するべきだと思うので、willDisplayCellで処理を記述しています。

実際の使用シーンではnextItemsの取得処理が入ると思います。

また、自分の場合、一番下にスクロールしたのが分かるように「ロード中」のようなテキストを表示するfooterを指定しています。その場合、固定表示したくないので、viewDidLoadで下のように指定してます。

tableView.tableFooteView = footer