안녕하세요. 기본적으로 지금까지 했던 프로젝트에서는 NavigationBar
에 refresh 버튼을 만들어 해당 버튼을 누르면 refresh가 되게 하였는데요. 오늘은 이보다 사용자가 사용하기에 편리한 방법인 리스트를 아래로 잡아 당겨 놓으면 refresh가 되게 하는 법을 알아보도록 하겠습니다.
직접 구현해보니 생각보다 훨씬 쉬운 방법이였습니다. 그럼 바로 시작해보도록 하겠습니다.
1. refreshControl
가장 먼저 ViewController
클래스 안에 UIRefreshControl
을 다음과 같이 생성합니다.
그리고 생성한 refreshControl
를 사용할 테이블 뷰에 붙입니다.
- iOS 버전에 따라
refreshControl
을 붙여주는 방법은 다릅니다. 10.0 이상은 기본적으로 테이블 뷰에 refreshControl
프로퍼티가 존재합니다.
이렇게 refreshControl
을 생성하고 붙였으면 해당 refreshControl
의 액션에 대한 행위를 정의한 메소드를 생성해주어야 합니다.
.valueChanged
가 일어났을 때 해당 메소드를 실행하라는 뜻입니다.
.valueChanged.
: A touch dragging or otherwise manipulating a control, causing it to emit a series of different values.
2.Refresh Action
Refresh에 대한 액션의 메소드를 구현해주면 됩니다.
하지만 여기서 중요한 것이 있습니다. 바로 refresh를 하는 행위가 끝나면 그것을 명시해주어야 합니다. 그렇지 않으면 테이블 뷰의 상단에서 refresh를 하는 행위가 유지될 것입니다. 예를 들어 통신을 통해서 데이터를 모두 받아왔을 때 refresh 행위를 멈춰주어야 합니다.
즉 이렇게 refresh를 멈춰주는 행위는 비동기적으로 처리를 해주어야 합니다. 저의 프로젝트에서의 코드는 다음과 같습니다.
- 위의 코드에서
success
메소드는 데이터 다운로드가 완료되었을 때 호출이 됩니다. 즉 .endRefreshing
행위를 비동기적으로 처리해준 것입니다.
3. Customizing
마지막으로 이렇게 refresh 행위가 진행될 때 부가적인 텍스트로 어떤 행위가 일어나고 있는지를 알려줄 수 있습니다.
마무리
오늘은 이렇게 간단히 테이블 뷰를 아래로 잡아당겨 refresh를 하는 방법에 대해 알아보았습니다. 기본적으로 이러한 행위는 테이블 뷰 뿐만 아니라 컬렉션 뷰에서도 가능합니다. 그럼 다음에는 더욱 알찬 내용으로 찾아뵙도록 하겠습니다. 감사합니다.