-
[ios - Swift] RefreshControl 사용하기ios 2020. 11. 22. 15:49
이번 시간에는 UITableView의 cell을 아래로 드래그 시 데이터를 Refresh 할 수 있도록 해보겠습니다.
1. UIRefreshControl
사용자가 스크롤 가능한 콘텐츠 영역의 상단을 아래로 드래그하면 스크롤 뷰에 새로 고침 컨트롤이 표시되고 진행률 표시기에 애니메이션을 적용하고 앱에 알립니다.
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(refreshWork), for: .valueChanged) mTableView.addSubview(refreshControl)
RefreshControl을 스크롤이 가능한 인터페이스에 Subview로 등록합니다.
selector: valueChage 발생 시 호출될 함수입니다.
for: 작업 메서드가 호출되는 컨트롤 관련 이벤트 비트 마스크입니다.
valueChange: 컨트롤을 드래그하거나 조작하여 일련의 다른 값을 방출하도록 하는 터치입니다.
@objc func refreshWork() { refreshControl.beginRefreshing() strArray.insert("New Data - 0", at: 0) strArray.insert("New Data - 1", at: 1) strArray.insert("New Data - 2", at: 2) strArray.insert("New Data - 3", at: 3) refreshControl.endRefreshing() mTableView.reloadData() }
beginREfreshing, endRefreshing는 Refresh의 시작과 끝을 알립니다.
Refresh가 발생하면 StrArray에 새로고침 될 데이터를 등록하고 실행 결과를 보도록 하겠습니다.
아래는 전체 소스입니다.
class RefreshViewController: UIViewController { @IBOutlet weak var mTableView: UITableView! var strArray = Array<String>() let refreshControl = UIRefreshControl() override func viewDidLoad() { super.viewDidLoad() for i in 0..<20 { strArray.append("Data Row - \(i)") } mTableView.delegate = self mTableView.dataSource = self refreshControl.addTarget(self, action: #selector(refreshWork), for: .valueChanged) mTableView.addSubview(refreshControl) } @objc func refreshWork() { refreshControl.beginRefreshing() strArray.insert("New Data - 0", at: 0) strArray.insert("New Data - 1", at: 1) strArray.insert("New Data - 2", at: 2) strArray.insert("New Data - 3", at: 3) refreshControl.endRefreshing() mTableView.reloadData() } } extension RefreshViewController: UITableViewDelegate, UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return strArray.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = UITableViewCell() cell.textLabel?.text = "\(strArray[indexPath.row])" return cell } }
'ios' 카테고리의 다른 글
[ios - Swift] UIView.Xib 사용하기 (0) 2020.11.24 [ios - Swift] UITableView 무한스크롤 구현하기 (0) 2020.11.22 [ios - Swift] UITableView Swipe Button 만들기 (0) 2020.11.20 [ios - Swift] UITableView Section DataSource 알아 보기 (0) 2020.11.19 [ios - Swift] UITableViewCell을 Xib로 만들기 (UITableView 2/2) (0) 2020.11.18