iOS 에서 UIRefreshControl 의 기본 사용 에 대한 자세 한 설명

프로필:
자주 업데이트 해 야 할 목록 을 보 여줄 때,예 를 들 어 상품 목록,채 팅 목록 을 보 여줄 때,우 리 는 어떤 조작 을 통 해 목록 을 갱신 해 야 한다.가장 자주 사용 하 는 것 은 바로 아래 에서 새로 고침 하 는 방법 이다.아래 에서 새로 고침 하 는 것 은 iOS 의 표준 컨트롤 로 서 제3자 라 이브 러 리 를 사용 하지 않 아 도 쉽게 실현 할 수 있다.이 글 은 UIRefreshControl 을 사용 하여 드 롭 다운 리 셋 기능 을 수행 하 는 방법 을 설명 한다.
UIRefreshControl 은 iOS 6 자체 의 UITableView 드 롭 다운 리 셋 컨트롤 입 니 다.iOS 6 에 서 는 UITableView Controller 에 UIRefreshControl 컨트롤 이 내장 되 어 있 습 니 다.UIRefreshControl 은 현재 UITableViewController 에 만 사용 할 수 있 습 니 다.다른 ViewController 에 사용 하면 다음 과 같은 오류 알림 을 받 을 수 있 습 니 다.(즉,UIRefreshControl 은 UITableViewController 에서 만 관리 할 수 있 습 니 다)  
1.먼저 UIRefreshControl 의 헤더 파일 보기

NS_CLASS_AVAILABLE_IOS(6_0) @interface UIRefreshControl : UIControl 
- (instancetype)init; 
@property (nonatomic, readonly, getter=isRefreshing) BOOL refreshing; 
//      
@property (nonatomic, retain) UIColor *tintColor; 
//          
@property (nonatomic, retain) NSAttributedString *attributedTitle UI_APPEARANCE_SELECTOR; 
//      
- (void)beginRefreshing NS_AVAILABLE_IOS(6_0); 
//      
- (void)endRefreshing NS_AVAILABLE_IOS(6_0); 
@end 
사용 방법
     1.현재 UITableview Controller 에 만 유용 합 니 다.
     2.현재 드 롭 다운 리 셋 만 가능 하 며,업 로드 는 불가능 합 니 다.
     3.init 또는 viewDidLoad 에서 UIRefreshControl 을 만 들 고 텍스트,색상 등 정 보 를 설정 합 니 다.
     4.UIRefreshControl 에 방법 을 추가 하고 값 이 바 뀔 때 호출 하 며 방법 은 데이터 요청 에 사 용 됩 니 다.
     5.이 방법 에서 데이터 확인 을 요청 한 후 endRefreshing 방법 을 사용 하여 새로 고침 을 닫 습 니 다.
2.예시 데모

#import <UIKit/UIKit.h> 
@interface RefreshTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 
@property (nonatomic, retain) UITableView * tableView; 
@property (nonatomic, retain) UIRefreshControl * refreshControl; 
@property (nonatomic, retain) NSMutableArray * dataSource; 
@end 

#import <UIKit/UIKit.h> 
@interface RefreshTableViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 
@property (nonatomic, retain) UITableView * tableView; 
@property (nonatomic, retain) UIRefreshControl * refreshControl; 
@property (nonatomic, retain) NSMutableArray * dataSource; 
@end 
#import "RefreshTableViewController.h" 
@interface RefreshTableViewController () 
@end 
 
@implementation RefreshTableViewController 
- (void)viewDidLoad { 
 [super viewDidLoad]; 
  
 _dataSource = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", nil nil]; 
  
 // UITableView 
 _tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain]; 
 _tableView.delegate = self; 
 _tableView.dataSource = self; 
 [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"UITableViewCell"]; 
 [self.view addSubview:_tableView]; 
  
 // UIRefreshControl 
 _refreshControl = [[UIRefreshControl alloc] init]; 
 _refreshControl.tintColor = [UIColor redColor]; 
 _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"    "]; 
 [_refreshControl addTarget:self action:@selector(refreshControlAction) forControlEvents:UIControlEventValueChanged]; 
 [_tableView addSubview:_refreshControl]; 
} 
 
 
- (void) refreshControlAction { 
 if (self.refreshControl.refreshing) { 
  _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"   ..."]; 
   
  // 1.        
  [self requestAPIData]; 
   
  // 2.      
  [self.refreshControl endRefreshing]; 
   
  // 3.        
  [self.tableView reloadData]; 
 } 
} 
 
 
- (void)requestAPIData { 
 //              
 [NSThread sleepForTimeInterval:2]; 
 for (int i = 0; i < 5; i++) { 
  int value = (arc4random() % 100) + 1; 
  [self.dataSource addObject:[NSString stringWithFormat:@"%d", value]]; 
 } 
} 
 
 
- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
 return self.dataSource.count; 
} 
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
 static NSString * ID = @"UITableViewCell"; 
 UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:ID]; 
 if (cell == nil) { 
  cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID]; 
 } 
  
 cell.textLabel.text = self.dataSource[indexPath.row]; 
 return cell; 
} 
 
 
- (void)didReceiveMemoryWarning { 
 [super didReceiveMemoryWarning]; 
} 
@end 
실행 효과:

UIRefreshControl 이 사용 하고 있 는 구덩이 밟 기 지침 에 대해 서 는 이 글 을 참고 하 실 수 있 습 니 다https://www.jb51.net/article/139064.htm
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기