swiftで無限スクロールを実装しています。
スクロールで最下部に達するたびに、APIをコールし、TableViewに加えるという処理を行いたいのですが、APIの処理が終わる前に、APIが次々よびだされてしまい、必要ないコール数が増え続ける問題を解決できません。
class tableViewController: UIViewController { @IBOutlet weak var tableView: UITableView! var data: [[String: Any]] = [] // 途中省略 // スクロールが最下部に達したらAPIをコールする func scrollViewDidScroll(_ scrollView: UIScrollView) { if (scrollView.contentOffset.y >= tableView.contentSize.height - self.tableView.bounds.size.height) { callAPI(apiurl: "hoge.com/api/data/") } } // APIをコールするメソッド func callAPI(apiurl: String){ Alamofire.request(apiurl).responseJSON{(response) in guard let j = response.result.value else{ return } let returnJson = JSON(j) let returnJsonResults = returnJson["results"] returnJsonResults.forEach{(_, returnJsonResults) in let sentence = returnJsonResults["sentence"].string as Any let profile_img = returnJsonResults["respondent"]["profile_img"].string as Any let data = [ "sentence": sentence, "profile_img": profile_img ] as [String : Any] self.data.append(data) } self.tableView.reloadData() } } }
API処理が終わる前に、scrollViewDidScrollが呼び出されていることが原因だとおもうのですが、
func callAPI が完了しているかどうかを判定する方法はありますか?
func scrollViewDidScroll(_ scrollView: UIScrollView) { if (CALLAPIが完了していたら){ API呼び出し; }
のようにしたいです。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/17 11:32