1) UIScrollViewDelegate
- TableView, CollectionView에는 스크롤이 내장되어있으므로 UIScrollViewDelegate 이용이 가능하다.
현재 테이블뷰/스크롤뷰가 있는 UIViewController에 UIScrollViewDelegate를 상속한다.
2) 필요 변수
- arraylist : 무한스크롤하여 불러올 데이터를 담을 array list 준비 -> 초기에는 빈 리스트
- pageNum : API의 pageNumber 변수
- fetchingMore : 더 스크롤하여 데이터를 불러올지에 대한 boolean 변수 -> 초기에는 true 값
3) scrollViewDidScroll 함수
그 다음, scrollViewDidScroll 함수에서 스크롤이 끝까지 닿았는지 판단한다.
이처럼 스크롤이 끝까지 닿았는지 판단 후, fetchingMore이 true일 경우 beginBatchFetch() 함수를 호출한다.
4) beginBatchFetch
API로부터 데이터를 불러오는 함수이다.
pageNum을 증가하여 데이터를 얻어오고, 기존 리스트에 추가하여 이 리스트를 collectionview에 반영하기 위해서 reloadData를 호출한다.
5) getCategoryFeed 함수
- page가 1이고 arraylist가 비어있을때 : 맨 처음 불러올때
- page가 1이 아니고 arraylist가 비어있을 때 : 더 불러오려고 했으나, 데이터가 없는 경우 -> fetchingMore을 false로
- 위 경우가 아니라면 데이터를 더 불러오는 중이므로, 얻어온 리스트를 기존 array list에 추가 후 reloadData 호출
개발자마다 구현 방식도 다 다르고, 이 방식이 정답은 아니지만 저는 이러한 방식으로 구현했습니다 ^.^
Reference
'🍎 iOS > iOS 심화 & 응용' 카테고리의 다른 글
[iOS] 자체 private repository 라이브러리 Cocoapods 배포하기 (0) | 2024.12.05 |
---|---|
[iOS] Xcode Cloud를 활용하여 iOS CI/CD 환경 구축하기 (0) | 2024.03.31 |
[iOS/Swift] URLSession vs Alamofire (0) | 2023.07.20 |
[iOS/Swift] FSCalendar로 캘린더 구현하기 (0) | 2022.12.15 |