xcode UIRefreshControl를 이용한 새로고침1 (Pull to Refresh)

2019. 7. 16. 14:14 IOS/xcode | IOS

UIRefreshControl은 화면을 새로고침 하는 개념이다. iOS6부터 지원된다.

예를 들면 페이스북과 같은 앱에서 화면에서 새로고침을 하기 위해 테이블을 아래로 당김으로써 새로고침하는 것들이 이에 해당된다.


 




UIRefreshControl 사용법


1. SingleView Application 으로 프로젝트 생성

2. MainStoryboard에 TableView  생성




3. 소스코드 작성


ViewController.h 파일에 테이블뷰와 데이터를 담을 배열, UIRefreshControl을 선언합니다.


ViewController.h

1
2
3
4
5
6
7
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
    NSArray *array;
    UIRefreshControl *refreshControl;
}
 
@property (strong, nonatomic) IBOutlet UITableView *tableView;
 
cs


테이블뷰에 데이터를 뿌려주고, Refresh 액션을 연결한 UIRefreshControl을 추가해줍니다.

(테이블뷰 데이터 관련 소스코드 생략)


ViewController.m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self initData];
    [self initLayout];
}
 
 
/**
 * 데이터 초기화
 */
- (void)initData {
     array = [NSArray arrayWithObjects:@"Apple", @"Banana", @"Car", @"Dog", @"Elephant", nil];
}
 
/**
 * 레이아웃 초기화
 */
- (void)initLayout {
    [self initRefreshControl];
    [_tableView addSubview:refreshControl];
}
 
/**
 * RefreshControl 초기화
 */
- (void)initRefreshControl {
    refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
 
    refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull To Refresh"];
}
 
/**
 * Refresh 이벤트
 */
- (void)handleRefresh:(UIRefreshControl *)sender {
    NSLog(@">>> handleRefresh");
    [refreshControl endRefreshing];
    
    // refresh
    [_tableView reloadData];
}



출처: https://jepark-diary.tistory.com/15?category=874567 [JEP's Diary]