반응형
UITableView에서 데이터 로드 후 마지막까지 스크롤을 내리면 추가로 데이터를 더 로드하도록 하는 법
다음과 같이 tableView 내장 함수 중에서 willDisplay cell 을 사용하여 스크롤 끝을 감지할 수 있다.
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row + 1 == yourArray.count {
print("load more")
}
}
참고 : CodeRedirect - Detect when UITableView has scrolled to the bottom
음.. 근데 문제가 스크롤 다 내려왔을 때도 호출하지만, 아예 데이터를 로드할 때 마다 함께 호출되는 것 같아서
이래도 되는지는 모르겠지만 다음과 같이 사용해주었다.
해당 함수 호출 횟수를 count 하는 loadCount와 실제 로딩해야할 페이지 indexPage 변수를 추가해주고
loadCount가 홀수일때만 페이지를 새로 로딩하고 가져오도록 하여
페이지 첫 로딩이 아닌 실제 스크롤이 마지막까지 내려갔을때만 데이터를 더 로드하게끔 만들어보았다.
ㅋㅋㅋ 뭐 일단 잘 되긴 된다.
var loadCount = 0
var indexPage = 0
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if indexPath.row + 1 == yourArray.count {
print("load more")
if !(loadCount % 2 == 0) {
indexPage += 1
print("index: \(indexPage)")
loadMore()
}
loadCount += 1
print("loadCount: \(loadCount)")
}
}
728x90
반응형
'Swift iOS 앱 개발 > Swift' 카테고리의 다른 글
[Swift] Access Control 접근 제어자 종류 및 사용 (0) | 2022.05.11 |
---|---|
[Swift iOS] UITextView set placeholder (0) | 2021.12.09 |
[Swift iOS] keyboard top toolbar 추가하기 (0) | 2021.11.11 |
[Swift iOS] UIComponents (0) | 2021.11.08 |
[Swift iOS] UICollectionView scroll to top / bottom (0) | 2021.10.13 |