728x90
생각보다 페이지네이션 작업은 까다롭다고 느껴진다.
페이지네이션 개발 방법은 예제가 많으므로 구현 자체는 어렵지 않지만, 깔끔하게 동작 하지 않는 경우가 너무 많은 것 같다.
아래 주의 사항은 내가 개발 하면서 마주 했던 문제점들을 해결하는 방법이다.
1) 최초 화면이 로드 될 때, 스크롤이 맨 밑에 있다고 인식 하는 경우
scrollViewDidScroll(_:) 에서 스크롤이 맨 밑에 도달 할 경우 새로운 페이지를 로드 시킨다면
처음 부터 새로운 페이지를 로드 하려 하기 때문에 오류가 발생한다.
이럴 때엔, 사용자가 스크롤 했다는 것을 알려주는 flag를 활용 할 수 있다.
scrollViewWillBeginDragging(_:) {
flag변수 = true
}
scrollViewDidScroll(_:) {
guard flag변수 else { return }
// 페이지 로드 함수 호출
}
2) 페이지네이션 중 api 통신을 중복 요청하는 경우_1
새로운 페이지 데이터를 받아오기 위해 api 통신을 하는데
사용자가 또 밑으로 스크롤을 하게 되면 통신을 위한 메서드를 계속 호출 하게 된다.
이 때에도 flag변수를 이용할 수 있다.
var isPaging = false
func scrollViewDidScroll(_:) {
if 맨 밑이면 {
loadNewPage()
}
}
func loadNewPage() {
isPaging = true
requestNewPage() {
// 통신 완료 후 flag를 다시 false로 초기화
isPaging = false
}
}
3) 페이지네이션 중 api 통신을 중복 요청하는 경우_2
tableView 또는 collectionView의 'Bounce On Scroll' 속성으로 인해 api 통신 중 바운스가 멈출 때까지 api 통신 요청을 하는 경우가 있다. 이럴 때엔 이 속성을 비활성화(체크 해제) 시켜주면 해결 할 수 있다.
728x90
'iOS > iOS' 카테고리의 다른 글
테스트 디바이스 (0) | 2024.01.23 |
---|---|
HTTP 허용 (0) | 2023.09.16 |
날린 작업 내역을 복구해보자 (0) | 2023.03.31 |
unlisted app(등록되지 않은 앱) 배포 방법 (0) | 2023.03.03 |
애플 리젝 (4) | 2023.03.03 |
댓글