사용법
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 이상에서 사용할 수 있습니다. 하위 버전을 지원해야 하는 경우, 조건부 코드를 작성하여 호환성을 유지해야 합니다.