본문 바로가기
iOS/iOS

페이지네이션(Pagination) 개발 시 발생할 수 있는 문제

by 패쓰킴 2023. 8. 31.
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

댓글