🍎 iOS/iOS 심화 & 응용

[iOS/Swift] Tableview/Collectionview 페이징 (Pagination)

dev_zoe 2022. 2. 6. 01:08
반응형

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

https://velog.io/@yoonah-dev/Infinite-Scroll

https://hururuek-chapchap.tistory.com/154

반응형