回答編集履歴

2 コードを追加

honami

honami score 302

2017/05/17 17:56  投稿

単純にtableViewControllerクラスに`isLoading`のようなフラグを用意し、
```Swift
func scrollViewDidScroll(_ scrollView: UIScrollView) {
 if (!self.isLoading && scrollView.contentOffset.y >= tableView.contentSize.height - self.tableView.bounds.size.height) {
     self.isLoading = true
     callAPI(apiurl: "hoge.com/api/data/")
 }
  if (!self.isLoading && scrollView.contentOffset.y >= tableView.contentSize.height - self.tableView.bounds.size.height) {
      self.isLoading = true
      callAPI(apiurl: "hoge.com/api/data/")
  }
}
```
`callAPI()`内で`self.tableView.reloadData()`完了後にフラグを降ろしてあげればいいんじゃないでしょうか?
```Swift
func callAPI(apiurl: String){
   Alamofire.request(apiurl).responseJSON{(response) in
       ...
       self.tableView.reloadData()
       self.isLoading = false
   }
```
としてあげればいいのではないでしょうか?
1 文法の修正

honami

honami score 302

2017/05/17 17:23  投稿

単純にtableViewControllerクラスに`isLoading`のようなフラグを用意し、
```Swift
func scrollViewDidScroll(_ scrollView: UIScrollView) {
 if (!self.isLoading && scrollView.contentOffset.y >= tableView.contentSize.height - self.tableView.bounds.size.height) {
     self.isLoading = true
     callAPI(apiurl: "hoge.com/api/data/")
 }
}
```
`callAPI()`内`self.tableView.reloadData()`後にフラグを降ろしてあげればいいんじゃないでしょうか?
`callAPI()`内で`self.tableView.reloadData()`完了後にフラグを降ろしてあげればいいんじゃないでしょうか?

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る