카테고리 없음

UIRefreshControl: UITableView와 UICollectionView에서 아래로 당겨 새로고침 하기

ragdoll-cat 2025. 2. 4. 22:08

사용법

1. UIRefreshControl 초기화 및 설정:

let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(handleRefresh), for: .valueChanged)

 

2. 테이블 뷰 또는 컬렉션 뷰에 추가:

  • UITableView의 경우:
tableView.refreshControl = refreshControl
  • UICollectionView의 경우:
collectionView.refreshControl = refreshControl

 

  • 새로고침 동작 처리 메서드 구현 예시
@objc 
private func pullToRefresh() {
  self.collectionView.reloadData()
  DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    self.refreshProductList()
    self.collectionView.refreshControl?.endRefreshing()
  }
}

2. 주의사항

  • 메인 스레드에서 UI 업데이트: 데이터 로드 작업이 비동기로 수행되는 경우, UI 업데이트는 반드시 메인 스레드에서 처리해야 합니다.
DispatchQueue.main.async {
    // UI 업데이트 작업
    self.refreshControl.endRefreshing()
}
  • UIRefreshControl의 endRefreshing 호출: 데이터 로드 작업이 완료되면 endRefreshing() 메서드를 호출하여 새로고침 상태를 종료해야 합니다. 이를 호출하지 않으면 새로고침 인디케이터가 계속 표시됩니다.

 

  • iOS 버전 호환성: UIRefreshControl은 iOS 6.0 이상에서 사용할 수 있습니다. 하위 버전을 지원해야 하는 경우, 조건부 코드를 작성하여 호환성을 유지해야 합니다.

References